2020.10.14 PIL & Pillow
PIL:Python Imaging Library,是Python事实上的图像处理标准库了。最近的优秀的兼容版本名字叫Pillow,因此我们可以直接安装使用Pillow。
补充:这里虽然安装了Pillow,但我们还是使用PIL,因为Pillow不是一个单独的库,而是对PIL的更新。
操作图像
1、读取图像文件并显示、保存
用到的库:Image
读取图像:Im=Image.open('path')
显示图像:Im.show()
保存图像:Im.save('文件名','扩展名')
图像尺寸:Im.size
创建画布:BackGround=Image.new(mode,size,color)
如果是RGB图像,大小为240x60,颜色为白色的背景板:
BG=Image.new('RGB',(240,60),(255,255,255))
from PIL import Image,ImageShow #用with语句块打开更安全 with Image.open('test.jpg') as im: #图像尺寸 w,h=im.size print('Original image size:%sx%s'%(w,h)) #显示图像 ImageShow.show(im) im.save('Test2.jpg','jpeg')
2、图像缩放
Im.thumbnail((new_width,new_height))
直接作用于图像对象Im,而没有返回值,不用另建变量存储
from PIL import Image,ImageShow with Image.open('Test.jpg') as Im: w,h=Im.size Im.thumbnail((w//2,h//2)) #size写作一个tuple传入,而不是分开传入 ImageShow.show(Im)
3、滤镜
需要用到库:ImageFilter
Im2=Im.filter(滤镜)
返回一个新的图像对象,需要用变量承接
from PIL import Image,ImageShow,ImageFilter with Image.open('Test.jpg') as Im: Im2=Im.filter(ImageFilter.BLUR)#模糊滤镜 Im2.show()
4、绘图
库:ImageDraw
用途:让我们直接绘图
练习:生成 字母验证码 图片
from PIL import Image,ImageFont,ImageDraw,ImageFilter import random #图像size w=240 h=60 #将经常使用的函数用变量表示 ri=random.randint #随机字符 def rndChar(): return chr(ri(65,90)) #随机颜色1 def rndColor1(): return (ri(64,255),ri(64,255),ri(64,255)) #随机颜色2 def rndColor2(): return (ri(32,128),ri(32,128),ri(32,128)) #创建画布 Im=Image.new('RGB',(w,h),(255,255,255))#3个参数:mode、size、color #创建draw对象 draw=ImageDraw.Draw(Im) #为每个像素填充颜色 for x in range(w): for y in range(h): draw.point((x,y),fill=rndColor1()) #创建Font对象 font=ImageFont.truetype('arial.ttf',36) #输出文字 for t in range(4): draw.text((60*t+10,10),rndChar(),font=font,fill=rndColor2()) #模糊处理 Im=Im.filter(ImageFilter.BLUR) Im.show()
结果:


浙公网安备 33010602011771号