百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python 包之 Pillow 图像处理教程

off999 2025-05-05 18:07 2 浏览 0 评论

一、安装

  • 被认为是python官方图像处理库
  • PIL非常适合于图像归档以及图像的批处理任务。可以使用PIL创建缩略图,转换图像格式,打印图像等等
  • PIL支持众多的GUI框架接口,可以用于图像展示
  • PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换
pip install Pillow


二、打开图片

from PIL import Image

im = Image.open("picture.jpg")
im.show()


三、转换格式并保存

from PIL import Image

im = Image.open("picture.jpg")
im.save("result.png")


四、创建缩略图

from PIL import Image

im = Image.open("picture.jpg")
im.thumbnail((128, 128))
im.save("result.jpg")


五、获取图片属性

  • 获取图像的来源,如果图像不是从文件读取它的值就是None。
from PIL import Image

im = Image.open("picture.jpg")
print(im.format)


六、图片信息

from PIL import Image

im = Image.open("picture.jpg")
print(im.info)


七、调色板

  • 如果图像的模式是“P”,则返回Image Palette类的实例;否则,将为None
from PIL import Image

im = Image.open("picture.jpg")
print(im.palette)


八、画板

  • 使用给定的变量mode和size生成画板
from PIL import Image

im= Image.new("RGB", (128, 128), "#FF0000")
im.show()


九、图片模式

  • 图像的模式,常见如下
  • L:8位像素,黑白
  • P:9位像素,使用调色板映射到任何其他模式
  • 1:1位像素,黑白图像,存成8位像素
  • RGB:3*8位像素,真彩
  • RGBA:4*8位像素,真彩+透明通道
  • CMYK:4*8位像素,印刷四色模式或彩色印刷模式
  • YCbCr:3*8位像素,色彩视频格式
  • I:32位整型像素
  • F:33位浮点型像素
from PIL import Image

im = Image.open("picture.jpg")
print(im.mode)


十、模式转换

  • 将当前图像转换为其他模式,并且返回新的图像
from PIL import Image

im = Image.open("picture.jpg")
new_im = im.convert('L')
print(new_im.mode)
new_im.show()


十一、矩阵模式转换

  • 使用转换矩阵将一个“RGB”图像转换为“L”或者“RGB”图像
from PIL import Image

im = Image.open("picture.jpg")
print(im.mode)
matrix = (0.412453,0.357580, 0.180423, 0,
           0.212671,0.715160, 0.072169, 0,
           0.019334,0.119193, 0.950227, 0 )
new_im = im.convert("L", matrix)
print(new_im.mode)
new_im.show()


十二、图片尺寸

  • 获取图像的尺寸,按照像素数计算,它的返回值为宽度和高度的二元组
from PIL import Image

im = Image.open("picture.jpg")
print(im.size)


十三、通道分离

  • 返回当前图像各个通道组成的一个元组
  • 分离一个 RGB 图像将产生三个新的图像
  • 分别对应原始图像的每个通道红、绿、蓝三张图片
from PIL import Image

im = Image.open("picture.jpg")

r,g,b = im.split()
print(r.mode)
print(r.size)
print(im.size)


十四、复制、裁剪、粘贴、合并

from PIL import Image

im = Image.open("picture.jpg")
# 复制
im.copy()
# 裁剪
im.crop((100, 100, 400, 400))
# 将一张图粘贴到另一张图像上
im.paste(im.transpose(Image.ROTATE_180),im)
# 合并类使用一些单通道图像,创建一个新的图像
Image.merge("RGB", im.split())


十五、几何变换

  • Image类有resize()、rotate()和transpose()、transform()方法进行几何变换
from PIL import Image

im = Image.open("picture.jpg")

# 修改尺寸
im.resize((128, 128))
# 角度旋转
im.rotate(45)
# 返回当前图像的翻转或者旋转的拷贝
# 值为:FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,ROTATE_270
im.transpose(Image.ROTATE_90)
# 用给定的尺寸生成一张新的图像,与原图有相同的模式
im.transform((200, 200), Image.EXTENT, (0, 0, 300, 300))


十六、高级图片处理

  • 使用ImageEnhance对象就能快速地进行设置。 可以调整对比度、亮度、色平衡和锐利度
from PIL import Image
from PIL import ImageEnhance

im = Image.open("picture.jpg")
enh = ImageEnhance.Contrast(im)
enh.enhance(1.3).show("30% more contrast")


十七、滤波器处理

from PIL import Image
from PIL import ImageFilter

im = Image.open("picture.jpg")
# 均值滤波
im1 = im.filter(ImageFilter.BLUR)
# 找轮廓
im2 = im.filter(ImageFilter.CONTOUR)
# 边缘检测
im3 = im.filter(ImageFilter.FIND_EDGES)
im.show()
im1.show()
im2.show()
im3.show()


十八、设置透明度合成两张图

  • 使用给定的两张图像及透明度变量alpha,生成一张新的图像
  • 变量alpha值在0和1之间
  • 若变量alpha为0.0,返回第一张图像的拷贝。若变量alpha为1.0,将返回第二张图像的拷贝。
from PIL import Image

im1 = Image.open("picture1.jpg")
im2 = Image.open("picture2.jpg")
im = Image.blend(im1, im2, 0.30)
im.show()


十九、设置模式合成两张图

  • 使用给定的两张图像及mask图像作为透明度,生成一张新的图像
  • 图像的模式可以为“1”,“L”或者“RGBA”
  • 所有图像必须有相同的尺寸
from PIL import Image

im1 = Image.open("picture1.jpg")
im2 = Image.open("picture2.jpg")
im = Image.composite(im1, im2, 'L')
im.show()


二十、草稿模式

  • 速度要求比质量高的场合
  • 允许在不读取文件内容的情况下尽可能(可能不会完全等于给定的参数)地将图片转成给定模式和大小,这在生成缩略图的时候非常有效
from PIL import Image

im = Image.open("picture.jpg")

print(im.size,im.mode)
new_im = im.draft("L", (200,200))
print(new_im.size,new_im.mode)
new_im.show()


二十一、获取通道名称

  • 返回包括每个通道名称的元组
  • 例如,对于RGB图像将返回(“R”,“G”,“B”)
from PIL import Image

im = Image.open("picture.jpg")
print(im.getbands())


二十二、获取包围盒

  • 计算图像非零区域的包围盒
  • 这个包围盒是一个4元组,定义了左、上、右和下像素坐标
  • 如果图像是空的,这个方法将返回空
from PIL import Image

im = Image.open("picture.jpg")
print(im.getbbox())


二十三、获取像素值

from PIL import Image

im = Image.open("picture.jpg")
print(im.getdata())


二十四、获取图片极值

  • 返回一个2元组
  • 包括该图像中的最小和最大值
from PIL import Image

im = Image.open("picture.jpg")
print(im.getextrema())


二十五、指定位置像素值

from PIL import Image

im = Image.open("picture.jpg")
print(im.getpixel((10,0)))


二十六、获取图像直方图

from PIL import Image

im = Image.open("picture.jpg")
im_histogram = im.histogram()
print(im_histogram[0])


二十七、内存分配

  • 为图像分配内存并从文件中加载它
  • 返回一个用于读取和修改像素的像素访问对象
from PIL import Image

im = Image.open("picture.jpg")
pix = im.load()
print(pix[0,2])


二十八、查找指定的帧

  • 给定的动态图中查找指定的帧
  • 如果查找超越了序列的末尾,则产生一个EOFError异常
  • 当文件被打开时,PIL库自动指定到第0帧上
from PIL import Image

im_gif = Image.open("loading.gif")
print(im_gif.mode)
# 默认打开时是第0帧
im_gif.show()
im_gif.seek(1)
im_gif.show()
im_gif.seek(3)
im_gif.show()


二十九、获取当前帧位置

from PIL import Image

im_gif = Image.open("loading.gif")
print(im_gif.tell())
im_gif.seek(3)
print(im_gif.tell())

来源:
https://www.cnblogs.com/autofelix/p/16128525.html

相关推荐

Python自动化脚本应用与示例(python自动化脚本教程)

Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作O批量重命名文件...

如何使用Python实现一个APP(如何用python做一个程序)

要使用Python实现一个APP,你可以选择使用一些流行的移动应用开发框架,如Kivy、PyQt或Tkinter。这里以Kivy为例,它是一个跨平台的Python框架,可以用于创建漂亮的图形用户界面(...

免费定时运行Python程序并存储输出文档的服务推荐

免费定时运行Python程序并存储输出文档的服务推荐以下是几种可以免费定时运行Python程序并存储输出结果的云服务方案:1.PythonAnywhere特点:提供免费的Python托管环境支持定时...

【Python程序开发系列】如何让python脚本一直在后台保持运行

这是我的第385篇原创文章。一、引言让Python脚本在后台持续运行,有几种常见的方式,具体方式可以根据你的系统环境和需求选择。二、Linux或macOS系统2.1使用nohup命令no...

运行和执行Python程序(运行python的程序)

一、Python是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式:交互式编程在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行代码,你还可以继续...

Python 初学者指南:计算程序的运行时长

在编写Python程序时,了解程序的运行时长是一项很有用的技能。这不仅能帮助你评估代码的效率,还能在优化程序性能时提供关键的数据支持。对于初学者来说,计算程序运行时长其实并不复杂,接下来就让我们看...

pyest+appium实现APP自动化测试,思路全总结在这里

每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01appium环境搭建安装nodejshttp://nodej...

血脉觉醒后,编程小白我是如何通过Deepseek和Trae轻松开发软件的

以下就是作为一个编程小白的我,是如何一步步开发软件的保姆级教程,请点赞收藏:第一步:打开#deepseek#(首先关闭深度思考和联网搜索)输入或复制你要让它做一个什么样软件的要求和提示词(你可以先用...

我用Deepseek+Trae写的python小软件,小白也能轻松用上模型啦!

利用AI大模型deepseek,搭配TraeCN,用半个小时做了一个本地Ollama安装部署和一键卸载的小工具,哈哈哈!感觉还不错#deepseek#一直想做一个本地Ollama安装部署和一键卸载...

在安卓设备上运行Python的方法(安卓能运行python吗)

技术背景在安卓设备上运行Python可以为开发者提供更多的开发选择和灵活性,能够利用Python丰富的库和简洁的语法来开发各种应用,如游戏、脚本工具等。然而,由于安卓系统原生不支持Python,需要借...

零基础小白,DeepSeek全自动编程,超详细提示词,一键生成软件!

我前面发表了文章,详细说了编程零基础小白,如何利用DeepSeek进行编程的全过程,感兴趣的可以去看看:DeepSeek全自动编程很多人不会写提示词,不知道怎么开始对话。话不多说,请先看下图中的对话,...

小白用DeepSeek+Python编写软件(用python制作软件)

周末无事,用DeepSeek生成全部代码,写了一个mp3音乐播放器,几分钟搞定,DeepSeek确实太强大了。我的提示语是这么写的:“请用Python语言写一个音乐播放器,支持常见音乐格式,我是Pyt...

零基础使用DeepSeek开发Windows应用程序,超简单超实用!

你敢相信,我居然用DeepSeek开发了一个能用的Windows软件!整个过程就像和学霸同桌组队做作业,我负责提需求,DeepSeek负责写代码改bug,全程碰到任何问题直接丢给DeepSeek即可。...

第二篇:如何安装Python并运行你的第一个程序

欢迎回到我的Python入门教程系列!在上一篇中,我们讨论了为什么Python是一门值得学习的编程语言。今天,我们将迈出第一步:安装Python并运行你的第一个程序。无论你是Windows、macOS...

Python 运行,带你找入口,快速读懂程序

有C或Java编程开发经验的软件开发者,初次接触python程序,当你想快速读懂python项目工程时,是否觉得python程序有些太过随意,让你看有些无所适从,进而有些茫然。这是...

取消回复欢迎 发表评论: