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')
将红色背景替换为蓝色背景。实际上的效果其实不是很好,人物边缘颜色比较难处理。