1.PIL库概述:PIL库可以完成图像归档和图像处理两方面的功能需求。(1)图像归档:对图像进行批处理、生成图像预览、图像格式转换等;(2)图像处理:图像基本处理、像素处理、颜色处理等。
关于PIL库Image类解析说明()
要加载一个图像文件,im=Image.open('图像保存位置') ,想将图像保存下来im.save('想将保存图像的位置')
下面将用一些例子来说明:
#im.thumbnail=((128,128))对im生成缩略图,其中(128,128)是缩略图的尺寸。
from PIL import Image#引用PIL库 im=Image.open('C:/Users/86183/Desktop/微信图片_20200414133515.jpg')#打开图像 im.thumbnail((128,128))#对图像进行缩略图处理,二元组(128,128)是生成图像的大小 im.save('C:/Users/86183/Desktop/suolvutu1.jpg')#保存
<原图 <缩略图
改变颜色实例
from PIL import Image im=Image.open('C:/Users/86183/Desktop/微信图片_20200414134749.jpg') r,g,b=im.split()# 获取RGB通道 newg=g.point(lambda i:i*0.9)#将G通道颜色值变为原来的0.9倍 newb=b.point(lambda i:i<100)#选择B通道值低于100的像素点 om=Image.merge(im.mode,(r,newg,newb))#将3个通道合成新的图像 om.save('C:/Users/86183/Desktop/颜色改变.jpg')#输出图像
<原图:<改变颜色后
图像的过滤于增强:利用Image类的filter()方法可以使用ImageFilter类,如下:Image.filter(ImageFliter.fuction)
获取图像的轮廓。原图同上
from PIL import Image from PIL import ImageFilter im=Image.open('C:/Users/86183/Desktop/微信图片_20200414134749.jpg') om=im.filter(ImageFilter.CONTOUR) om.save('C:/Users/86183/Desktop/获取轮廓.jpg')
<轮廓图
图像的过滤和增强:
采用ImageFilter.EMBOSS可以使图像产生浮雕类效果,具体操作如下:
from PIL import Image from PIL import ImageFilter im=Image.open('C:/Users/86183/Desktop/微信图片_20200414134749.jpg') om=im.filter(ImageFilter.EMBOSS) om.save('C:/Users/86183/Desktop/浮雕图.jpg')
<浮雕
图像字符画绘制:
位图图片是由不同颜色像素点组成的规则分布,如果才用字符串代替像素,图像就成为了字符画。
from PIL import Image ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxr jft/|()1{}[]?-/+@<>i!;:,^`.') def get_char(r, b, g, alpha=256): if alpha == 0: return ' ' gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) unit = 256 / len(ascii_char) return ascii_char[int(gray//unit)] def main(): im = Image.open('file:///C:/Users/86183/Desktop/微信图片_20200414182738.png') WIDTH, HEIGHT = 100,100 im = im.resize((WIDTH, HEIGHT)) txt = "" for i in range(HEIGHT): for j in range(WIDTH): txt += get_char(*im.getpixel((j, i))) fo = open("zifuhua.txt","w") fo.write(txt) fo.close() main()
<原图<字符图
除了以上的例子外,PIL还可以实现制作GIF图片和GIF图片的提取。
from PIL import Image im = Image.open('C:/Users/86183/Desktop/2016120211583958491.gif') try: im.save('C:/Users/86183/Desktop/tiquzhenshu{:03d}.png'.format(im.tell())) while True: im.seek(im.tell()+1) im.save('C:/Users/86183/Desktop/tiquzhenshu{:02d}.png'.format(im.tell())) except: print('操作完成')
<原GIF图