10.0.0#

向后不兼容的更改#

类别#

im.category 已删除,以及相关的 Image.NORMALImage.SEQUENCEImage.CONTAINER 属性。

为了确定图像是否具有多个帧, getattr(im, "is_animated", False) 可以改为使用。

Tk/Tcl 8.4#

已移除对Tk/TCL 8.4的支持。

JpegImagePlugin.convert_dict_qtables#

自Pillow 8.3.0中的弃用以来, convert_dict_qtables 方法不再对提供给它的数据执行任何操作,并且已被移除。

ImagePalette大小参数#

在Pillow 8.3.0之前, ImagePalette 默认情况下需要特定长度的调色板数据,而 size 参数可以用来覆盖它。Pillow 8.3.0删除了默认的所需长度,也不再需要 size 参数。

ImageShow.Viewer.show_file文件参数#

这个 file 中的论点 show_file() 已被移除,并被替换为 path

实际上, viewer.show_file("test.jpg") 将继续原封不动地工作。

常量#

一些常量已被删除。相反, enum.IntEnum 已经添加了课程。

远离的

代替使用

Image.LINEAR

Image.BILINEAR or Image.Resampling.BILINEAR

Image.CUBIC

Image.BICUBIC or Image.Resampling.BICUBIC

Image.ANTIALIAS

Image.LANCZOS or Image.Resampling.LANCZOS

ImageCms.INTENT_PERCEPTUAL

ImageCms.Intent.PERCEPTUAL

ImageCms.INTENT_RELATIVE_COLORMETRIC

ImageCms.Intent.RELATIVE_COLORMETRIC

ImageCms.INTENT_SATURATION

ImageCms.Intent.SATURATION

ImageCms.INTENT_ABSOLUTE_COLORIMETRIC

ImageCms.Intent.ABSOLUTE_COLORIMETRIC

ImageCms.DIRECTION_INPUT

ImageCms.Direction.INPUT

ImageCms.DIRECTION_OUTPUT

ImageCms.Direction.OUTPUT

ImageCms.DIRECTION_PROOF

ImageCms.Direction.PROOF

ImageFont.LAYOUT_BASIC

ImageFont.Layout.BASIC

ImageFont.LAYOUT_RAQM

ImageFont.Layout.RAQM

BlpImagePlugin.BLP_FORMAT_JPEG

BlpImagePlugin.Format.JPEG

BlpImagePlugin.BLP_ENCODING_UNCOMPRESSED

BlpImagePlugin.Encoding.UNCOMPRESSED

BlpImagePlugin.BLP_ENCODING_DXT

BlpImagePlugin.Encoding.DXT

BlpImagePlugin.BLP_ENCODING_UNCOMPRESSED_RAW_RGBA

BlpImagePlugin.Encoding.UNCOMPRESSED_RAW_RGBA

BlpImagePlugin.BLP_ALPHA_ENCODING_DXT1

BlpImagePlugin.AlphaEncoding.DXT1

BlpImagePlugin.BLP_ALPHA_ENCODING_DXT3

BlpImagePlugin.AlphaEncoding.DXT3

BlpImagePlugin.BLP_ALPHA_ENCODING_DXT5

BlpImagePlugin.AlphaEncoding.DXT5

FtexImagePlugin.FORMAT_DXT1

FtexImagePlugin.Format.DXT1

FtexImagePlugin.FORMAT_UNCOMPRESSED

FtexImagePlugin.Format.UNCOMPRESSED

PngImagePlugin.APNG_DISPOSE_OP_NONE

PngImagePlugin.Disposal.OP_NONE

PngImagePlugin.APNG_DISPOSE_OP_BACKGROUND

PngImagePlugin.Disposal.OP_BACKGROUND

PngImagePlugin.APNG_DISPOSE_OP_PREVIOUS

PngImagePlugin.Disposal.OP_PREVIOUS

PngImagePlugin.APNG_BLEND_OP_SOURCE

PngImagePlugin.Blend.OP_SOURCE

PngImagePlugin.APNG_BLEND_OP_OVER

PngImagePlugin.Blend.OP_OVER

FitsStubImagePlugin#

存根图像插件 FitsStubImagePlugin 已被移除。无需处理器即可读取FITS图像 FitsImagePlugin 取而代之的是。

字体大小和偏移方法#

删除了几个用于计算呈现文本的大小和偏移量的函数:

远离的

代替使用

FreeTypeFont.getsize() and FreeTypeFont.getoffset()

FreeTypeFont.getbbox() and FreeTypeFont.getlength()

FreeTypeFont.getsize_multiline()

ImageDraw.multiline_textbbox()

ImageFont.getsize()

ImageFont.getbbox() and ImageFont.getlength()

TransposedFont.getsize()

TransposedFont.getbbox() and TransposedFont.getlength()

ImageDraw.textsize() and ImageDraw.multiline_textsize()

ImageDraw.textbbox(), ImageDraw.textlength() and ImageDraw.multiline_textbbox()

ImageDraw2.Draw.textsize()

ImageDraw2.Draw.textbbox() and ImageDraw2.Draw.textlength()

FreeTypeFont.getmask2填充参数#

未登记的人 fill 的参数 FreeTypeFont.getmask2() 已被移除。

PhotoImage.Paste box参数#

这个 box 参数未使用,已被删除。

PyQt5和PySide2#

Qt 5 reached end-of-life 对于开源用户,将于2020-12-08年月到期(对于商业许可证持有者,将于2023-12-08年年达到停产)。

已从中删除对PyQt5和PySide2的支持 ImageQt 。升级到 PyQt6PySide6 取而代之的是。

Image.coerce_e#

此未记录的方法已被删除。

废弃#

PyAccess和Image.USE_CFFI_Access#

由于Pillow的C API现在比PyPy上的PyAccess更快, PyAccess 已弃用,将在枕头11.0.0(2024-10-15)中删除。Pillow的C API现在将在PyPy上默认使用。

Image.USE_CFFI_ACCESS ,用于从C API切换到PyAccess,同样不推荐使用。

API更改#

向ImageDraw Regular_Polygon添加了线宽参数#

可选的一行 width 参数已添加到 ImageDraw.Draw.regular_polygon

API添加#

增列 alpha_only 参数为 getbbox()#

getbbox() 现在接受关键字参数 alpha_only 。这是可选标志,默认为 True 。如果 True 并且图像有一个Alpha通道,裁剪透明像素。否则,请在所有通道均为零时裁切像素。

安全性#

限制大小,即使一个维度为零#

在执行解压炸弹检查时,Pillow没有拒绝宽度和高度过大或宽度和高度过高的图像。现在,这一问题已经得到解决。

这实际上可以追溯到PIL叉子,因为在Pillow开始检查减压炸弹之前,问题图像仍然会被处理。

添加ImageFont.MAX_STRING_LENGTH#

当使用任意字符串作为文本输入时,为了防止潜在的DOS攻击,Pillow现在将引发 ValueError 如果传入ImageFont方法的字符数超过特定限制, PIL.ImageFont.MAX_STRING_LENGTH

此阈值可通过设置 PIL.ImageFont.MAX_STRING_LENGTH 。可以通过设置来禁用它 ImageFont.MAX_STRING_LENGTH = None

其他变化#

32位轮子#

不再提供32位轮子。

支持IPython中的display_jpeg()#

除了……之外 display()display_pngdisplay_jpeg() 现在还可以用于在IPython::中显示图像

from PIL import Image
from IPython.display import display_jpeg

im = Image.new("RGB", (100, 100), (255, 0, 0))
display_jpeg(im)

支持读取带符号的8位TIFF图像#

现在可以读取具有带符号整数数据、每个样本8位和BlackIsZero光度解释的TIFF图像。