使用pillow处理图像

1、安装pillow

 pip install pillow
 

2、打开图片

from PIL import Image
im = Image.open('./templates/images/002-01.jpg')
im.show()

3、图片信息

print(im.format,im.size,im.mode)

4、剪切

ret = 200,0,300,50
im.crop(ret).show()

需要传入一个x0,y0,x1,y1 的集合

5、缩略图

size = 128,128
im.thumbnail(size)
im.show()

很明显制作缩略图会覆盖原图片对象。 

6、缩放

im2 = im.resize((100,600))
im2.show()

重设分辨率返回新的对象而不是修改原对象 

7、黏贴

im.paste(im2,(300,100))
im.show()

原地修改,不返回新的对象,不需要新变量接收 

8、翻转和旋转

im.rotate(90).show()

 

im.transpose(Image.FLIP_LEFT_RIGHT).show()

9、操作像素

for x in range(100,200):
    for y in range(0,100):
        im.putpixel((x,y),(128,128,128))

im.show()

10、滤镜

im.filter(ImageFilter.CONTOUR).show()

简单的练习:

使用像素替换的方式更改证件照的背景。

#目标图片
im1 = Image.open('./templates/tup.png')
#需要替换的颜色
im2 = Image.open('./templates/tu3.png')

im1_c1 = im1.getpixel((0, 0))
im2_c2 = im2.getpixel((0, 0))

#红色背景RGB的主要分布
color = ((x,y,z) for x in range(150,192) for y in range(12,38) for z in range(22,48))

width, height = im1.size


for x in range(width):
    for y in range(height):
        dot = (x,y)
        if im1.getpixel(dot) in color:
            im1.putpixel(dot, im2_c2)
im1.show()
im1.save('./templates/tup1.png')

将红色背景替换为蓝色背景。实际上的效果其实不是很好,人物边缘颜色比较难处理。


版权声明:本文为Marvin_Wind原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。