pil显示图片_python PIL Image 图片处理的基础使用方法Tutorial (二)

一、Image的模式mode转换

常用模式 L RGB RGBA CMYK

from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")im=im.convert("L")im.show()
21b14d7e77216ca48625f93a8a3eed6b.png

im.convert("L")显示的图片

二、图片更改效果

使用图片过滤器更改效果 使用ImageFilter模块

from PIL import Imagefrom PIL import ImageFilter#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")im = im.filter(ImageFilter.CONTOUR)im.show()im = im.filter(ImageFilter.EMBOSS)im.show()
a7697700a33165e89ce6d3077a30108d.png

ImageFilter.CONTOUR使用的效果

1f8160ad90d43b77e3d96108a19591db.png

ImageFilter.EMBOSS

对单个像素点的修改效果

from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")r, g, b = im.split()#更改r 图层的像素点r=r.point(lambda x:x if x<100 else 255)im = Image.merge("RGB", (r,g,b))im.show()
4d3c524e4bcf99c22749c31f52a4603d.png

更改r 图层的像素点的效果图片

使用ImageEnhance模块修改图片效果

增加图片90%对比度

增加90%对比度from PIL import Imagefrom PIL import ImageEnhance#不需要关注文件格式,PIL会自动处理im = Image.open("background.jpg")enh = ImageEnhance.Contrast(im)#增加90%对比度enh.enhance(1.9).show()
80a2e7b3c438a9f0ff393c926c7ccfcd.png

增加90%对比度

三、处理动图、使用Image的tell、seek方法或使用ImageSequence模块

787da96d9ca7951782ba87d6a723d4ef.gif

预生成的gif图片

from PIL import Image#不需要关注文件格式,PIL会自动处理im = Image.open("1586920674140.gif")print(im)## 获取第二张图片,使im的指针指向的二张图片im.seek(1) #获取当前位置 print结果为1print(im.tell())im.show()

获取的index为1的图片

6686a88df612e96765e694d7fdc7ffe8.png

使用ImageSequence模块实现

from PIL import Imagefrom PIL import ImageSequence#不需要关注文件格式,PIL会自动处理im = Image.open("1586920674140.gif")for frame in ImageSequence.Iterator(im):    print(frame)    frame.show()

四、更多读取图片的方式

通过二进制文件指针文件读取

from PIL import Imagewith open("background.jpg", "rb") as fp:    im = Image.open(fp)    im.show()

通过字符串读取

from PIL import Imagefrom io import BytesIO as Bytes2Datawith open("background.jpg","rb") as fp:    s=fp.read()    iostr=Bytes2Data(s)    newim = Image.open(iostr)    newim.show()

通过压缩包形式如tar 形式读取

from PIL import Image, TarIOfp = TarIO.TarIO("bg.tar", "backgound.jpg")im = Image.open(fp)im.show()
67d870ad5a15b81ebc56024abb24e8df.png

五、预处理图片draft

因为open方法时懒加载,在没有实际使用时如 show 或save等方法时,可以使用draft 方法预处理

from PIL import Imageim = Image.open("background.jpg")#im.show()print("original =", im.mode, im.size)im.draft("L", (100, 100))print("draft =", im.mode, im.size)im.show()
660ab331a69cb9bae4f6b99c262ff3f5.png

若取消注释im.show()

from PIL import Imageim = Image.open("background.jpg")im.show()print("original =", im.mode, im.size)im.draft("L", (100, 100))print("draft =", im.mode, im.size)im.show()
c38d075015cec38d0f747a3bb697fb5a.png

参考网站

https://pillow.readthedocs.io/en/5.2.x/handbook/tutorial.html

#科技青年# #423头条知识节#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值