一、Image的模式mode转换
常用模式 L RGB RGBA CMYK
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")im=im.convert("L")im.show()
二、图片更改效果
使用图片过滤器更改效果 使用ImageFilter模块
from PIL import Imagefrom PIL import ImageFilter#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")im = im.filter(ImageFilter.CONTOUR)im.show()im = im.filter(ImageFilter.EMBOSS)im.show()
对单个像素点的修改效果
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")r, g, b = im.split()#更改r 图层的像素点r=r.point(lambda x:x if x<100 else 255)im = Image.merge("RGB", (r,g,b))im.show()
使用ImageEnhance模块修改图片效果
增加图片90%对比度
增加90%对比度from PIL import Imagefrom PIL import ImageEnhance#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")enh = ImageEnhance.Contrast(im)#增加90%对比度enh.enhance(1.9).show()
三、处理动图、使用Image的tell、seek方法或使用ImageSequence模块
from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("1586920674140.gif")print(im)## 获取第二张图片,使im的指针指向的二张图片im.seek(1) #获取当前位置 print结果为1print(im.tell())im.show()
获取的index为1的图片
使用ImageSequence模块实现
from PIL import Imagefrom PIL import ImageSequence#不需要关注文件格式,PIL会自动处理im = Image.open("1586920674140.gif")for frame in ImageSequence.Iterator(im): print(frame) frame.show()
四、更多读取图片的方式
通过二进制文件指针文件读取
from PIL import Imagewith open("background.jpg", "rb") as fp: im = Image.open(fp) im.show()
通过字符串读取
from PIL import Imagefrom io import BytesIO as Bytes2Datawith open("background.jpg","rb") as fp: s=fp.read() iostr=Bytes2Data(s) newim = Image.open(iostr) newim.show()
通过压缩包形式如tar 形式读取
from PIL import Image, TarIOfp = TarIO.TarIO("bg.tar", "backgound.jpg")im = Image.open(fp)im.show()
五、预处理图片draft
因为open方法时懒加载,在没有实际使用时如 show 或save等方法时,可以使用draft 方法预处理
from PIL import Imageim = Image.open("background.jpg")#im.show()print("original =", im.mode, im.size)im.draft("L", (100, 100))print("draft =", im.mode, im.size)im.show()
若取消注释im.show()
from PIL import Imageim = Image.open("background.jpg")im.show()print("original =", im.mode, im.size)im.draft("L", (100, 100))print("draft =", im.mode, im.size)im.show()
参考网站
https://pillow.readthedocs.io/en/5.2.x/handbook/tutorial.html
#科技青年# #423头条知识节#