文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python之pil的使用详解

2024-04-02 19:55

关注

一:PIL功能介绍与安装

PIL,全称Python Image Library,主要作用是图像处理,可用于图片剪切、粘贴、缩放、镜像、水印、颜色块、滤镜、图像格式转换、色场空间转换、验证码、旋转图像、图像增强、直方图处理、插值和滤波等功能。不过只支持到Python 2.7。Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。我们需要安装的就是Pillow。

PIL具体用途:

pip install Pillow

貌似Pillow是默认安装好了的,可以通过pip list查看是否已经安装

二:PIL的基本操作

以下是打开图片保存图片的基本操作。


from PIL import Image

# 1.打开图片
img = Image.open("image/10.jpg")
# 2.显示图片(执行显示图片后线程会中断,关闭图像后恢复)
img.show()
# 3.保存图片
img.save("image/xiaomai.jpg")

在这里插入图片描述

我在尝试的过程中发现,jpg格式的图片保存为jpg格式时会报错:OSError: cannot write mode RGBA as JPEG,经过查阅资料发现错误原因主要是因为jpg格式和JPG格式图片的通道数不同。

所以,jpg格式图片要保存成JPG格式就要丢弃A通道:


from PIL import Image

# 1.打开图片
img = Image.open("image/10.jpg")
# 2.显示图片(执行显示图片后线程会中断,关闭图像后恢复)
img.show()
# 3.保存图片
img = img.convert("RGB")
img.save("image/xiaomai.jpg")

在这里插入图片描述

下面是图片旋转的代码:


from PIL import Image

# 1.打开图片
img = Image.open("pli/7.jpg")
# 2.水平翻转
img1 = img.transpose(Image.FLIP_LEFT_RIGHT)
# 3.保存图片
img1.save("pli/1.jpg")
# 4.垂直翻转
img2 = img.rotate(180)
# 5.保存照片
img2.save("pli/2.jpg")
# 6.水平+垂直翻转
img3 = img.transpose(Image.FLIP_LEFT_RIGHT).rotate(180)
# 7.保存图片
img3.save("pli/3.jpg")

在这里插入图片描述

三:给图片增加文字

要在图像上绘制文本要用到 PIL 的两个模块:ImageDraw和ImageFont。 ImageDraw 用于创建绘图对象,ImageFont用于加载字体。


from PIL import Image, ImageDraw, ImageFont
# 1.打开图片
img = Image.open("image/10.jpg")
# 2.调用画图模块
draw = ImageDraw.Draw(img)
# 3.设置字体
tfont = ImageFont.truetype("萌神手写体.ttf", 24)
# 4.添加文字
"""
    参数一:文字在图片的位置:(x, y)
    参数二:文字内容
    参数三:字体颜色,当然颜色也可以用RGB值指定
    参数四:字体类型
"""
draw.text((50, 30), "eyes++", fill="green", font=tfont)
# 5.保存图片
img.save("image/addWord.jpg")
# 6.显示图片
img.show()

在这里插入图片描述

四:PIL滤镜功能


from PIL import Image, ImageFilter
img = Image.open("image/10.jpg")
img = img.filter(ImageFilter.CONTOUR)
img.save("image/Filter.jpg")
img.show()

在这里插入图片描述

滤镜类型如下:

在这里插入图片描述

五:PIL镜像功能


from PIL import Image
img = Image.open("image/10.jpg")
img = img.transpose(Image.FLIP_LEFT_RIGHT)
img.save("image/mirror.jpg")

在这里插入代码片transpose

有这么几种模式

最后一种模式我也不知道什么意思,也没查到,但效果是下面这样的,盲猜是对角线对转。。。。。

在这里插入图片描述

除了使用transpose制造镜像,使用rotate也可以的,不过rotate只能旋转:

在这里插入图片描述

发现这样旋转会有棱角,然后经过某位不愿透露姓名的大佬指点,发现是rotate旋转只是像素旋转,画布不动,于是我写下了以下测试代码:


from PIL import Image

img = Image.open("image/12.jpg")
img1 = img.transpose(Image.ROTATE_90)
img1.save("image/test.jpg")
img2 = img.rotate(90)
img2.save("image/test2.jpg")

在这里插入图片描述

可以发现小埋的rotate旋转不会自动填充空白像素,而血小板的会自动黑色填充。是因为jpg格式是非失真性压缩的,允许使用类似于GIF格式的调色板技术,支持真彩色图像,并具备阿尔法通道(半透明)等特性。而jpg格式没有阿尔法通道,因此jpg格式图片不能为透明,jpg格式可以。

六:图片拼接功能

虽说是拼接,但更像是将两幅图粘贴到一个新的画布上


from PIL import Image, ImageDraw

# 打开图片
img1 = Image.open("image/10.jpg")
img2 = Image.open("image/addWord.jpg")
# 查看图片尺寸,便于拼接图片
print(img1.size)
print(img1.size)
# 新建空白图片,三个参数分别是模式(RGB/RGBA)、大小、颜色
newimg = Image.new(mode="RGB", size=(1174, 614), color=(255, 100, 50))
# 拼接图片,第一个参数是图片,第二个是起始位置
newimg.paste(img1, (0, 0))
newimg.paste(img2, (587, 0))
newimg.show()

在这里插入图片描述

七:PIL裁剪功能

图片裁剪用到的方法是image.crop(),这个方法能从图像中提取出某个矩形大小的图像。它接收一个四元素的元组作为参数,各元素为(left, upper, right, lower),坐标系统的原点(0, 0)是左上角。


from PIL import Image
img = Image.open("image/10.jpg")
print(img.size)
imgCut = img.crop((100, 200, 500, 600))
imgCut.show()

在这里插入代码片

在这里插入图片描述

八:图片缩放

可能这么看不是二分之一,但这是显示问题,可以看数据:


from PIL import Image

# :
img = Image.open('image/10.jpg')
# 获得图像尺寸:
w, h = img.size
# 缩放到50%:
img.thumbnail((w//2, h//2))
# 把缩放后的图像用jpeg格式保存:
img.save('image/zoom.jpg')

在这里插入图片描述

如果有兴趣了解更多相关内容,可以来我的个人网站看看:eyes++的个人网站

到此这篇关于python之pil的使用的文章就介绍到这了,更多相关python pil 使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯