pil显示图片_Pillow库:一个友好的、已经取代PIL的python的图像处理库

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的关系了===

24ec42936d07d472413e6ec0e5d72eec.png

2 准备:

=====

2.1 官网:

https://github.com/python-pillow/Pillowhttps://python-pillow.org/https://pillow.readthedocs.io/en/latest/index.html
3c58ead45565e3a31806f695453b5051.png

2.2 安装:

#比较正规的安装方法,官方推荐python3 -m pip install --upgrade pip  #先升级pippython3 -m pip install --upgrade Pillow  #安装pillow
712711ac42d90702604b003049609c5f.png

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 操作和效果图:

75ef89623fd6f104e934de4c8bb5bd2c.gif

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 效果图:

cd82f3d4b6b7f4ced0b22ab7f115c874.gif

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 图:

0df26498c65a178c199eaf57e4afa6a1.png

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 图:

534e619afa14fc99ff4b795b09ecca14.png

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 效果图:

19e7edfd3af0a57c35834f65f9820267.png

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 效果图:

173667227bfbbd9ce03d69c1af9aacb8.png

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 图:

78b35879969209698b80ef77359e8811.png

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 效果图:

627446af29e6a3e355f1a388b5eb5c98.gif

===自己整理并分享出来===

喜欢的人,请点赞、关注、评论、转发和收藏。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值