1 说明:
======
1.1 PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。
1.2 由于PIL仅支持到Python 2.7,加上年久失修,所以诞生:Pillow。
1.3 于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x。
1.4 Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。
===终于搞清楚PIL和Pillow的关系了===
2 准备:
=====
2.1 官网:
https://github.com/python-pillow/Pillowhttps://python-pillow.org/https://pillow.readthedocs.io/en/latest/index.html
2.2 安装:
#比较正规的安装方法,官方推荐python3 -m pip install --upgrade pip #先升级pippython3 -m pip install --upgrade Pillow #安装pillow
2.3 环境:
华为笔记本电脑、深度deepin-linux操作系统、谷歌浏览器、python3.8和微软vscode编辑器。
2.4 注意:
#python2 import Image #python3(因为是派生的PIL库,所以要导入PIL中的Image)#本机是python3,也相信大多数python用户已经使用python3了from PIL import Image
3 系统默认图片编辑器ImageMagick:显示图片
====================================
3.1 代码:
from PIL import Image#打开图片,并默认显示,注意图片格式im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")#im = Image.open("/home/xgj/Desktop/pillow/22.jpg")#im = Image.open("/home/xgj/Desktop/pillow/33.png")#im = Image.open("/home/xgj/Desktop/pillow/44.gif") #此方法不能显示动态gifim.show()
3.2 操作和效果图:
3.3 参数和保存,代码:
from PIL import Image#打开图片,并默认显示,注意图片格式im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")im.show() #启动默认图片编辑器显示#format格式:jpeg,大写JPEG#size属性是一个tuple,表示图像的宽和高(单位为像素)#mode属性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。print(im.format, im.size, im.mode)#保存,注意在保存时,自动格式转换,以下已经测试过#im.save("/home/xgj/Desktop/pillow/110.jpeg")#im.save("/home/xgj/Desktop/pillow/111.jpg")#im.save("/home/xgj/Desktop/pillow/112.png")#im.save("/home/xgj/Desktop/pillow/113.bmp")
4 采用matplotlib显示图片:
===================
4.1 代码:
from PIL import Imageimport matplotlib.pyplot as plt#打开图片,并默认显示,注意图片格式im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")#im.show() #默认图片显示器显示图片#plt显示图片plt.imshow(im)plt.show()
4.2 效果图:
5 图片缩放:
=========
5.1 代码:
from PIL import Image#打开原图片im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")#图片缩放,即图片大小按比例修改,数值可自定义imnew = im.resize((100,100)) #参数表示图像的新尺寸,分别表示宽度和高度#展示新图imnew.show()#保存新图imnew.save("/home/xgj/Desktop/pillow/small.jpg")
5.2 图:
5.3 用matplotlib一起展示2个图
5.3.1 代码:复习matplotlib的subplot
from PIL import Imageimport matplotlib.pyplot as plt#打开原图片im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")#图片缩放,即图片大小按比例修改,数值可自定义imnew = im.resize((100,100)) #参数表示图像的新尺寸,分别表示宽度和高度fig = plt.figure()ax = fig.add_subplot(221) #第一个子图ax.imshow(im) #默认配置ax = fig.add_subplot(222) #第二个子图ax.imshow(imnew) #默认配置plt.show() #显示图像
5.3.2 图:
6 转换灰度并显示:
==============
6.1 代码:
from PIL import Image#打开图片,并默认显示,注意图片格式im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")# 将彩色转换成灰阶greyscale_image = im.convert('L')#im.show() #不能显示转换后的灰度照片#im.show(greyscale_image) #不能显示转换后的灰度照片#im.show(greyscale_image,cmap='gray') #报错#只能用matplotlib显示转换后灰度照片import matplotlib.pyplot as plt# 注意要注明cmap='gray'才能够正确秀出灰阶图像plt.imshow(greyscale_image,cmap='gray')plt.show()
6.2 效果图:
7 画图和文字输出:
=============
7.1 代码:
from PIL import Image,ImageDraw,ImageFontimport matplotlib.pyplot as plt# 产生一个有4个颜色channels的空白图像,大小,背景颜色设置blank_image = Image.new('RGBA',(400,300),'black')# 在blank_image 图像上绘图img_draw = ImageDraw.Draw(blank_image)# 画一个矩形,元组(X,Y,X,Y),高150,长200img_draw.rectangle((70,50,270,200),outline='red',fill='yellow')# 取得字形物件fnt = ImageFont.truetype('hwfs.ttf',20) # 修改电脑上的字型,字体可自行下载# 放上文字信息到图像上img_draw.text((70,250),'Hello world==你好世界',font=fnt,fill='purple')plt.imshow(blank_image)plt.show()
7.2 效果图:
7.3 在图片上输出文字,代码:
from PIL import Image,ImageDraw,ImageFontimport matplotlib.pyplot as plt#打开一张图片im = Image.open("/home/xgj/Desktop/pillow/11.jpeg")# 在图像上输出文字img_draw = ImageDraw.Draw(im)# 取得字形物件fnt = ImageFont.truetype('hwfs.ttf',40) # 修改电脑上的字型,字体可自行下载# 放上文字信息到图像上img_draw.text((70,250),'生如夏花之绚烂',font=fnt,fill='red')plt.imshow(im)plt.show()
7.4 图:
8 创建随机字母码:
=============
8.1 代码:
from PIL import Image, ImageDraw, ImageFont, ImageFilterimport random# 随机字母:def rndChar(): return chr(random.randint(65, 90))# 随机颜色1:def rndColor(): return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))# 随机颜色2:def rndColor2(): return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))a=300width = a*4height = aimage = Image.new('RGB', (width, height), (255, 255, 255))# 创建Font对象:font = ImageFont.truetype('hwfs.ttf', 200)# 创建Draw对象:draw = ImageDraw.Draw(image)# 填充每个像素:for x in range(width): for y in range(height): draw.point((x, y), fill=rndColor())# 输出文字:for t in range(4): draw.text((a * t + 10, 10), rndChar(), font=font, fill=rndColor2())# 模糊:image = image.filter(ImageFilter.BLUR)image.show()image.save('/home/xgj/Desktop/pillow/code.jpg')
8.2 效果图:
===自己整理并分享出来===
喜欢的人,请点赞、关注、评论、转发和收藏。