今天我的朋友圈炸锅了
原因竟是因为我发的几张九宫格图片:
朋友纷纷问我原因。我说都是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')
最后一起来看一下我们执行的结果。
这种图片放哪里它不香呢?
源码已经准备好,接下来你想切割那张照片只需换照片即可!如果有需要,私我!