自从这个世界上出现了Python编程,一切都好像有了新的思路与进展,比如人工智能,还有我们常用的PS,你可知道Python也可以做图像处理,用的就是PIL库,还没有用过的,还没有发现的,还没有实现过的,赶紧来本文学习吧:
在介绍本文之前,先为大家解释一下什么是Python的PIL库:
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了,今天只是简单的学习了几个方法就已经感受到PIL的强大。
PIL可以做很多和图像处理相关的事情:
图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
图像展示(Image Display)。PIL较新的版本支持包括TkPhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。
作为一个爱折腾的程序猿能用代码的解决的情绝对不会用其他的方式,Python可以打飞机,人工降雪,那么p个图对于Python来说是小儿科了,今天先给大家介绍今天学到的三个比较好玩的操作:
代码实现
先上一个效果图。
实现这个效果使用的是PIL中的Blend类
Image.blend(image1,image2,alpha)
⇒image
使用给定的两张图像及透明度变量alpha,插值出一张新的图像。这两张图像必须有一样的尺寸和模式。
合成公式为:out=image1(1.0- alpha)+image2alpha
若变量alpha为0.0,返回第一张图像的拷贝。若变量alpha为1.0,将返回第二张图像的拷贝。对变量alpha的值无限制。
1from PIL import Image2im1 = Image.open("124.jpg")3im2 = Image.open("123.jpg")4print(im1.mode,im1.size)5print(im2.mode,im2.size)6im = Image.blend(im1, im2, 0.3)7im.save('k3.jpg')
当然除了上面的方法还可以使用Composite类
Image.composite(image1,image2, mask) ⇒ image
复合类使用给定的两张图像及mask图像作为透明度,插值出一张新的图像。变量mask图像的模式可以为“1”,“L”或者“RGBA”。所有图像必须有相同的尺寸。
1from PIL import Image2im1 = Image.open("124.jpg")3im2 = Image.open("123.jpg")4r,g,b = im1.split() 5print(b.mode)6print(im1.mode,im1.size)7print(im2.mode,im2.size)8im = Image.composite(im1,im2,b)9im.save('k1.jpg')
自己只是做了一个简单的测试大家可以通过这种方法做出更好看的图片,PIL不仅可以使两张图片进行重合,还可以给图片添加水印。
1from PIL import Image, ImageDraw,ImageFont 2#将原来的图片转换为RGBA模式 3im = Image.open(r"timg2.png").convert('RGBA') 4#新建一个图片,尺寸与上面的尺寸一样,透明度为0即完全透明 5txt=Image.new('RGBA', im.size, (0,0,0,0)) 6#设置要写文字的字体 7fnt=ImageFont.truetype("D:PycharmProjectsmusicSIMYOU.TTF