Pillow是一款专业的Python图像库。扩展Python图像库图像库就来使用Pillow。您可以帮助用户调整Python中的图像处理功能,以便于用户管理图像和使用代码处理图像。对于需要使用Python来处理数据或管理图像的朋友,软件提供了大量的图像处理功能,支持使用图像类处理。图像,可以构建类,可以编辑类功能,可以读取图像,可以增强,使用打开模块将图像加载到软件处理,为用户编辑图像提供更多帮助;枕头可以更好地扩展Python图像库映像库功能允许Python映像库具有更多的图像编辑和转换功能,可以将图像读取到软件处理从本地读取图像,可以转换为JPEG,可以识别图像,可以剪切,粘贴,并统一图像,如果您需要此软件下载它!
软件功能:
1概述
Python映像库将图像处理能力添加到Python解释器中。
此库提供了广泛的文件格式支持,有效的内部表示和相当强大的图像处理功能。
核心图像库旨在快速访问以几种基本像素格式存储的数据。它应该为通用图像处理工具提供坚实的基础。
我们来看看图书馆的一些可能使用。
2,图片文件
Python映像库是图像档案和批处理应用的理想选择。您可以使用此库在文件格式之间创建缩略图,转换,打印图像等。
当前版本标识并读取大量格式。有兴趣的写入以限制最常见的交换和表示格式。
3,图像显示
前版本包括TKPhotoImage和BitMapimage接口,以及可与PythonWin和其他基于Windows的工具包一起使用的TK和接口。许多其他GUI工具箱提供了一些PIL支持。 Windows Dib接口
对于调试,有一个show()将图像保存到磁盘并调用外部显示实用程序。
4,图像处理
库包含基本的图像处理功能,包括使用内置卷积内核的点操作,过滤和颜色空间转换。
该库还支持图像尺寸调整,旋转和任意仿射变换。
有一个直方图方法,允许您从图像中提取一些统计信息。这可用于自动对比度增强和全局统计分析。那
官方教程:
教程
使用图像类
Python映像库中最重要的类是在模块中定义了相同名称的类。您可以以各种方式创建此类实例。从文件加载图像或从开头开始创建图像。
要从文件中加载图像,请使用模块图像中的OPEN()函数:
如果成功,此函数将返回图像对象。现在,您可以使用实例属性来检查文件内容:
格式属性标识图像的源。如果未从文件中读取图像,请将其设置为“无”。大小属性是一个包含宽度和高度的双向组(以像素为单位)。模式属性定义图像中频带的数量和名称,以及像素类型和深度。共模是灰度图像的“L”(亮度),真正的Col的“RGB”
或图像和打印图像的“cmyk”。
如果无法打开文件,Osterror将触发异常。
图像实例是此类的实例,您可以使用此类定义来处理和操作图像。例如,让我们显示刚加载的图像:
笔记
标准版本的show()效率不是很高,因为它将图像保存到临时文件并调用实用程序以显示图像。如果您没有合适的实用程序,它甚至可以工作。但是,当它工作时调试和测试非常方便。
以下部分概述了本库中提供的各种功能。
读和写
Python映像库支持各种图像文件格式。要从磁盘读取文件,请在模块中使用Open()函数映像。您不必知道文件的文件格式。根据文件的内容,库会自动确定格式。
要保存文件,请使用类保存()方法映像。保存文件时,名称非常重要。除非您指定格式,否则库将使用文件扩展名来发现要使用的文件存储格式。
将文件转换为JPEG
可以向Save()方法提供第二个参数,该方法以文件格式明确指定。如果使用非标准扩展,则必须始终以这种方式指定格式:
创建JPEG缩略图
值得注意的是,除非是真,否则库不会解码或加载栅格数据。打开文件时,读取文件标题以确定文件格式,然后提取解码文件所需的模式,大小和其他属性,但稍后将处理文件的其余部分。
这意味着打开的图像文件是一个快速操作,它与文件大小和压缩类型无关。这是一个简单的脚本,可快速标识一组图像文件:
识别图像文件
剪切,粘贴和合并图像
此图像类包含允许您在图像中运行的方法。要从图像中提取子矩形,请使用作物()方法。
来自图像复制子矩形
该区域由四个组定义,坐标(左,向上,右和向下)。 Python映像库使用左上角(0,0)的坐标系。另请注意,坐标是指像素之间的位置,因此上述示例中的区域完全是300x300像素。
现在可以以某种方式处理这个区域并将其粘贴。
处理孩子矩形,然后粘贴回来
当粘贴面积时,该区域的尺寸必须与给定区域完全匹配。此外,该区域不能延伸到图像。但是,原始图像的模式和面积不需要匹配。如果不是,则该区域在粘贴之前自动转换。
这是另一个例子:
滚动映像
对于更先进的技术,粘贴方法还可以使用透明掩模作为可选参数。在该掩模中,值255表示粘贴的图像是不透明的(即,应使用粘贴的图像)。值0表示粘贴的图像完全透明。中间值代表不同级别的透明度。例如,RGBA图像被粘贴并用作掩模以粘贴图像的不透明部分,但不粘贴其透明背景。
Python成像库还允许您使用多频带图像的每个频带(例如,RGB图像)。拆分方法创建一组新的图像,每个图像包含一个原始的多频带图像之一。合并函数使用模式和一组图像,然后将它们组合成新图像。以下示例交换了RGB图像的三个频段:
分裂和巩固乐队
请注意,对于单频带图像,拆分()返回图像本身。要使用每个功能区,您可能需要将图像转换为“RGB”。
几何变换
此PIL.IMAGE.IMAGE类包含resize()和rotate()图像。前者在该组中给出了新的尺寸,后者处于逆时间。
简单的几何变换
要以90度旋转图像,可以使用旋转()方法,或使用转置()方法。后者还可用于在图像的水平或垂直轴周围翻转图像。
换位
转置()旋转()如果将展开标记为true,则还可以以与向图像的大小相同的操作相同的方式执行操作。
通过此变换()方法可以执行更全面的图像转换形式。
颜色
Python映像库允许您在不同像素表示之间转换图像
唱这个转换()方法。
模式转换
此库支持每个支持模式和“L”和“RGB”模式之间的转换。要在其他模式之间进行转换,您可能必须使用中间图像(通常是“RGB”图像)。
图像增强
Python映像库提供了许多可用于增强图像的方法和模块。
筛选
ImageFilter模块包含许多可以与过滤器()方法一起使用的预定义的增强滤波器。
应用过滤器
点操作
点()方法可用于转换图像的像素值(例如,图像对比度操纵)。在大多数情况下,可以将参数的函数对象传递给此方法。根据此功能处理每个像素:
应用点转换
通过上述技术,您可以快速将任何简单的表达应用于图像。您还可以使用点()和粘贴()方法来修改图像。
更新日志
8.2.0
丢弃
分类目录IM.Category,将在枕头10.0.0(1月2,2023)中删除,其中包含相关边缘映像.normal,image.sequence和images.container属性。
您可使用它来确定图像是否具有多个帧。 getattr(Im,“is_animated”,false
TK / TCL 8.4
不再支持TK / TCL 8.4,并在最低支持TK / TCL 8.5处以枕头10.0.0(2023-01-02)中除去。
API改变
image.alpha_composite:目标
调用alpha_composite()时,Dest参数现在正在接收负坐标,例如框参数的左上角粘贴()。当然,这具有裁剪图像的效果。
image.getexif:EXIF和GPS IFD
以前,GetExif()将ExiFI IFD交叉作为其余数据,从而丢失信息。现在,此信息保持独立,移动到IM.GETEXIF()。 get_ifd(0x8769)。
通过访问GPS IFD字典im.getexif()[0x8825]。这与其他IFDS一致,必须由IM.GETEXIF()访问。 get_ifd(0x8825)。
这些变化仅影响GetExif()枕头6.0的引入。较旧的_getexif()方法不受影响。
图片。 _ModeInfo.
自Pil,此内部词典已被注释并现在已删除。相反,image.getModeBase(),image.getModeBabrandwes(),可以使用image.getModeBands()或ImageMode.getMode()。
API附加了J.
PEG图像getxmp()
添加了一种新方法以返回JPEG图像的XMP数据。它将XML数据读入名称和值的字典中。
例如:
imageageRaw.Rounded_Rectangle.
已添加rounded_rectangle()。矩形()除其他RADIUS参数外,其工作原理是相同的。半径限制为宽度或高度的一半,以便用户可以创建一个圆圈,但不能创建任何其他椭圆形。
imageops.autocontrast:preserve_tone.
默认行为autocontrast()是针对每个颜色通道的标准化,以改变图像的色调。新的Preserve_tone参数通过使用所有通道的亮度直方图使音调保持不变。
imageshow.gmdisplayViewer.
如果有graphicsmagick,pil.imageshow.viewer将注册这个新子类。它使用GraphicsMagick工具,ApageMagick的叉形显示图像。
基于GrainicsMagick的查看器优先级低于ImageMagick的查看器。因此,如果ImageMagick和GraphicsMagick,ImageMbick()和ImageShow.show()也安装了,即,对于安装在imagemagick中的枕头用户,其行为保持不变。
imagehow.ipythonviewer.
如果有ipython,pil.imageshow.viewer将注册这个新子类。它在所有IPython前端显示图像。这将有助于允许im.show()显示图像的Google Colab用户。
它的优先级低于其他默认PIL.ImagesHow.Viewer实例,因此只有其他查看者可以与IM.show()或imageshow.show()一起使用,只使用它。这意味着大多数枕头用户在Pil.imageshow中的行为将保持不变。
用ICC档案保存TIFF
JPEG,PG和WEPP已经可用,现在您可以通过关键字参数指定TIFF文件的ICC配置文件:
安全
这些通过OSS-FIZZ找到。
CVE-2021-25287,CVE-2021-25288:固定OOB读取在JPEG2KDECODE中
对于具有多个频带的J2K图像,每个频带具有不同的宽度,例如用于L的一个字节,对于A的4个字节。
这可以追溯到枕头2.4.0。
CVE-2021-28675:在Psdimageplugin中修复DOS
psdimageplugin.psdimagefile不智能地检查数据块大小上的输入图层的数量,这可能导致拒绝服务加载之前的OPEN()。
这可以追溯到pil分支。
CVE-2021-28676:修复FLI DOS
没有正确检查FlideCode.c是非零的非零,这可能导致无限循环。
这可以追溯到pil分支。
CVE-2021-28677:在EPS DOS上修复_open
EPS中使用的READLINE必须处理\ r和\ n作为行的任何组合。在查找结束时,它意外使用四重方法。
在接受打开的图像之前,恶意EPS文件可以使用此文件在开放阶段执行枕头的拒绝服务。
这可以追溯到pil分支。
CVE-2021-28678:修复BLP DOS
BlpimagePlugin在数据返回到文件偏移量之前没有检查。这可能导致拒绝服务,其中解码器可以多次运行空数据。
这可以追溯到枕头5.1.0。
修复ImageFont中的内存DOS
损坏或特殊的TTF字体字体指示灯可能导致字体显示文本时的不合理的大字体。 imagefont.py不会在分配内存之前检查图像大小。
这可以追溯到pil分支。
其他变化
GIF Writer使用LZW编码
现在,使用LZW写入GIF文件,这将生成一个较小的文件,通常是旧编码器生成的文件大小的70%。
使用CompUserve GIF标准中指定的格式对像素数据进行编码。
早的编码器使用由运行长度编码的变体,该变体兼容,但效率低。
图形magick.
此测试套件现已在安装GraphicsMagick但未安装ImageMagick的系统上运行。如果安装了两者,则测试将更喜欢ImageMagick。
Libraqm和Fribidi链接
已更改了复杂文本脚本的Libraqm依赖关系的链接模式:
现在,源构建将在构建而不是运行时连接到系统的Libraqm版本。
二进制车轮现在包含一个静态链接Libraqm修改版本,它在运行时链接到Fribidi。此更改旨在解决某些平台上以前的实施问题。这些是通过使用新的构建标志构建枕头来创建的。 - vendor-raqm - vendor-fribidi
Windows用户现在只需要安装Fribidi.dll(或fribidi-0.dll),不再使用libraqm.dll。
软件特色:
1,增强功能
要制作更高级的图像增强功能,您可以使用ImageNhance模块中的类。从图像创建后,您可以使用增强的对象快速尝试不同的设置。
您可以通过这种方式调整对比度,亮度,色彩平衡和清晰度。
2.图像序列
Python映像库包含一些对图像序列的基本支持(也称为动画格式)。支持的序列格式包括FLI / FLC,GIF和一些实验格式。 TIFF文件还可以包含多个帧。
3.PostScript打印
Python映像库具有在PostScript打印机上打印图像,文本和图形的功能
4.控制解码器
一些解码器允许您在从文件中读取图像时运行。创建缩略图(通常比质量更重要)并打印到单色激光打印机(仅限图像的灰度版本)时,通常可以加速解码速度。
5.Python映像库处理光栅图像;也就是说,像素数据的矩形。
图像可以包含一个或多个数据频带。 Python映像库允许您在单个图像中存储多个频带,只要它们具有相同的大小和深度即可。例如,PNG图像的红色,绿色,蓝色和α透明度值可以具有“R”,“G”,“B”和“A”频带。许多操作在每个频段上行动,例如直方图。通常,每个像素被认为具有每个频带的值通常非常有用。