今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

今天我的朋友圈炸锅了

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

原因竟是因为我发的几张九宫格图片:

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

朋友纷纷问我原因。我说都是python的PIL库(Python Image Library)帮我搞定的。

 

首先我们来做一个简单的了解:

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

Python图像库PIL(Python Image Library)是python的第三方图像处理库。由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。

PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持python3。

那么它可以用来帮助我们做些什么?

 

图像归档

PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。

 

图像展示

PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。

 

图像处理

PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。

 

PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

 

今天我们用一个实际的例子,看我是如何利用这个python库成功的在朋友圈装13的。

整体思路如下:

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

接下来咱们来分步操作:

1.因为我的PC目前使用的是python3.8.所以需要先安装pillow这个库。

pip install pillow -i https://pypi.douban.com/simple

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

和Image这个库。

pip install Image -i https://pypi.douban.com/simple

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

2.然后定义我们需要切割的照片。

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

3.编码。

3.1首先我们导入刚才安装好的库。

from PIL import Image

3.2.之后通过我们写的read_image获取图片信息。

width, height = image.size
#选取长和宽中较大值作为新图片的·
new_image_length = width if width > height else height
#生成新图片[白底]
new_image = Image.new(image.mode, (new_image_length, new_image_length), color='white')

 

3.3.然后利用我们写的方法将主图切割成9张白底照片。利用双重for循环获取到九张照片。

def cut_image(image):
    width, height = image.size
    item_width = int(width / 3)
    box_list = []
    # (left, upper, right, lower)
    for i in range(0,3):#两重循环,生成9张图片基于原图的位置
        for j in range(0,3):
            box = (j*item_width,i*item_width,(j+1)*item_width,(i+1)*item_width)
            box_list.append(box)

 

3.4.最后一步保存到我们指定的路径即可。

def save_images(image_list):
    index = 1
    for image in image_list:
        image.save('./beautiful/girls'+str(index) + '.jpg', 'PNG')

最后一起来看一下我们执行的结果。

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

这种图片放哪里它不香呢?

今天这几张照片在我的朋友圈里炸锅啦!背后的真相令人...

源码已经准备好,接下来你想切割那张照片只需换照片即可!如果有需要,私我!