PIL库的总结及运用
PIL库的总结:(以代码形式)
#date: 2018/11/15 from PIL import Image,ImageFilter,ImageDraw,ImageFont #####除了缩略图的方法,其他方法都是返回值,需要变量来接收 img = Image.open('2.jpg') #img.show() #展示图片 # print(img.size[0],img.size[1]) #在图片中添加文字 # draw = ImageDraw.Draw(img) # ttFont = ImageFont.truetype ("C:/Users/admin/Desktop/文件/微信爬虫/simhei.ttf", 60) # draw.text((img.size[0]/2,img.size[1]/2),text='你好',font=ttFont,fill=(255,0,0)) # img.show() # new_image = img.resize((1080,800),resample = 4) #改变图片大小, 参数含义,默认NEAREST最近邻(分割常用),分类常用BILINEAR双线性,BICUBIC立方 # new_image.show() #展示改变后的图片 # im = Image.new('RGB',(128,128),color=700) #新建一张大小为128*128的图片,color为颜色参数(默认为黑色) # im.show() # img_1 = img.convert('L') #将图片改变为灰色,参数'L','F','I'都是灰色,一般用L # img_2 = img.convert('1') #参数 1 也是灰度,会加模糊网格滤镜 # img_2.show() # img_1.show() # img.thumbnail((150,130)) #缩略图,与resize功能类似 重要!@resize需要重新定义新图,thumbnail不用 # img.show() # img.thumbnail((640,400)) # rotate 逆时针改变图方向 # im = img.rotate(315) # im.show() #img_new = img.filter(ImageFilter.BLUR) #使图片变模糊 #img_new = img.filter(ImageFilter.DETAIL) #使图片细节更突出 #img_new = img.filter(ImageFilter.CONTOUR) #使图片只有轮廓 #img_new = img.filter(ImageFilter.EDGE_ENHANCE) #使图像整体颜色更深 有点油画的感觉 #img_new = img.filter(ImageFilter.EDGE_ENHANCE_MORE) #上一个加强版 #img_new = img.filter(ImageFilter.EMBOSS) #使图片石雕化,就是石膏一样的图片 #img_new = img.filter(ImageFilter.FIND_EDGES) #使图片黑色化,只剩轮廓 #img_new = img.filter(ImageFilter.SMOOTH_MORE) #使图片平滑 #img_new.show()
缩略图代码:
from PIL import Image img = Image.open('D:\\莲花.jpg') img = img.resize((100, 128), Image.ANTIALIAS) img.save('莲花_small.jpg')
此代码将缩略图存放在与程序同一级目录
原图:
缩略图:
图片颜色处理:
from PIL import Image im= Image.open('D:\\莲花.jpg') r,g,b=im.split() om = Image.merge("RGB",(g,b,r))#修改颜色 om.save('莲花_color.jpg')
处理后:
轮廓,浮雕,锐化等
处理代码:
from PIL import Image from PIL import ImageFilter im= Image.open('D:\\莲花.jpg') om = im.filter(ImageFilter.CONTOUR)#轮廓处理 #om = im.filter(ImageFilter.EMBOSS)#浮雕处理 #om = im.filter(ImageFilter.SHARPEN)#锐化处理 om.save('莲花_contour.jpg')
轮廓处理后:
浮雕处理后:
锐度处理后:
提取GIF图的每一帧代码:
from PIL import Image im= Image.open('D:\\123.gif') try: im.save('123_{:02d}.png'.format(im.tell())) while True: im.seek(im.tell()+1) im.save('123_{:02d}.png'.format(im.tell())) except: print("over")
原图:
每一帧: