千家信息网

python的Pillow图像处理方法怎么用

发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,本文小编为大家详细介绍"python的Pillow图像处理方法怎么用",内容详细,步骤清晰,细节处理妥当,希望这篇"python的Pillow图像处理方法怎么用"文章能帮助大家解决疑惑,下面跟着小编的
千家信息网最后更新 2024年11月19日python的Pillow图像处理方法怎么用

本文小编为大家详细介绍"python的Pillow图像处理方法怎么用",内容详细,步骤清晰,细节处理妥当,希望这篇"python的Pillow图像处理方法怎么用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、安装

  • 被认为是python官方图像处理库

  • PIL非常适合于图像归档以及图像的批处理任务。可以使用PIL创建缩略图,转换图像格式,打印图像等等

  • PIL支持众多的GUI框架接口,可以用于图像展示

  • PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换

pip install Pillow

二、打开图片

from PIL import Imageim = Image.open("picture.jpg")im.show()

三、转换格式并保存

from PIL import Imageim = Image.open("picture.jpg")im.save("result.png")

四、创建缩略图

from PIL import Imageim = Image.open("picture.jpg")im.thumbnail((128, 128))im.save("result.jpg")

五、获取图片属性

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

from PIL import Imageim = Image.open("picture.jpg")print(im.format)

六、图片信息

from PIL import Imageim = Image.open("picture.jpg")print(im.info)

七、调色板

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

from PIL import Imageim = Image.open("picture.jpg")print(im.palette)

八、画板

  • 使用给定的变量mode和size生成画板

from PIL import Imageim= 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 Imageim = Image.open("picture.jpg")print(im.mode)

十、模式转换

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

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

十一、矩阵模式转换

  • 使用转换矩阵将一个"RGB"图像转换为"L"或者"RGB"图像

from PIL import Imageim = 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 Imageim = Image.open("picture.jpg")print(im.size)

十三、通道分离

  • 返回当前图像各个通道组成的一个元组

  • 分离一个 RGB 图像将产生三个新的图像

  • 分别对应原始图像的每个通道红、绿、蓝三张图片

from PIL import Imageim = Image.open("picture.jpg")r,g,b = im.split()print(r.mode)print(r.size)print(im.size)

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

from PIL import Imageim = 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 Imageim = Image.open("picture.jpg")# 修改尺寸im.resize((128, 128))# 角度旋转im.rotate(45)# 返回当前图像的翻转或者旋转的拷贝# 值为:FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,ROTATE_270im.transpose(Image.ROTATE_90)# 用给定的尺寸生成一张新的图像,与原图有相同的模式im.transform((200, 200), Image.EXTENT, (0, 0, 300, 300))

十六、高级图片处理

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

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

十七、滤波器处理

from PIL import Imagefrom PIL import ImageFilterim = 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 Imageim1 = 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 Imageim1 = Image.open("picture1.jpg")im2 = Image.open("picture2.jpg")im = Image.composite(im1, im2, 'L')im.show()

二十、草稿模式

  • 速度要求比质量高的场合

  • 允许在不读取文件内容的情况下尽可能(可能不会完全等于给定的参数)地将图片转成给定模式和大小,这在生成缩略图的时候非常有效

from PIL import Imageim = 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 Imageim = Image.open("picture.jpg")print(im.getbands())

二十二、获取包围盒

  • 计算图像非零区域的包围盒

  • 这个包围盒是一个4元组,定义了左、上、右和下像素坐标

  • 如果图像是空的,这个方法将返回空

from PIL import Imageim = Image.open("picture.jpg")print(im.getbbox())

二十三、获取像素值

from PIL import Imageim = Image.open("picture.jpg")print(im.getdata())

二十四、获取图片极值

  • 返回一个2元组

  • 包括该图像中的最小和最大值

from PIL import Imageim = Image.open("picture.jpg")print(im.getextrema())

二十五、指定位置像素值

from PIL import Imageim = Image.open("picture.jpg")print(im.getpixel((10,0)))

二十六、获取图像直方图

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

二十七、内存分配

  • 为图像分配内存并从文件中加载它

  • 返回一个用于读取和修改像素的像素访问对象

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

二十八、查找指定的帧

  • 给定的动态图中查找指定的帧

  • 如果查找超越了序列的末尾,则产生一个EOFError异常

  • 当文件被打开时,PIL库自动指定到第0帧上

from PIL import Imageim_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 Imageim_gif = Image.open("loading.gif")print(im_gif.tell())im_gif.seek(3)print(im_gif.tell())

读到这里,这篇"python的Pillow图像处理方法怎么用"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

0