9.3.0#

API添加#

允许设置默认ImageDraw字体#

现在可以为以后的所有ImageDraw操作设置默认字体,而不是在调用与文本相关的ImageDraw方法时指定字体,或者在每个ImageDraw实例上设置字体:

from PIL import ImageDraw, ImageFont
ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

保存多个MPO帧#

现在可以保存多个MPO帧。使用 save_all 参数,则图像的所有帧都将保存到文件::

from PIL import Image
im = Image.open("frozenpond.mpo")
im.save(out, save_all=True)

还可以在保存时追加其他图像,方法是将 save_allappend_images 论点::

im.save(out, save_all=True, append_images=[im1, im2, ...])

已添加ExifTag枚举#

数据来自 TAGSGPSTAGS 现在还暴露为 enum.IntEnum 班级: BaseGPS

安全性#

保存时初始化libtiff缓冲区#

使用libtiff将TIFF图像保存到文件对象时,缓冲区未初始化。此行为在Pillow 2.0.0中引入,现在已修复。

在原始模式下解码JPEG压缩的BLP1数据#

在BLP图像格式中,BLP1数据可以使用JPEG压缩。现在,Pillow将以其自然的CMYK模式对数据进行解码,然后将其转换为RGB,然后重新排列频道,而不是告诉JPEG库该数据处于BGRX模式。尝试以不正确的模式加载数据可能会导致分段错误。此问题在Pillow 9.1.0中引入。

限制SAMPLESPERPIXEL以避免运行时DOS#

中的较大值 SAMPLESPERPIXEL 标记可能导致内存和运行时DOS在 TiffImagePlugin.py 当设置用于图像解码的上下文时。这是在Pillow 9.2.0中引入的,可以通过 OSS-Fuzz 并通过限制 SAMPLESPERPIXEL 我们可以破译的飞机数量。

其他变化#

Python3.11轮子#

Pillow 9.2.0针对Python3.11测试版构建了轮子,作为预览提供,以帮助其他人为3.11做准备,并确保Pillow可以在3.11.0最终版(2022-10-24, PEP 664 )。

Pillow 9.3.0现在正式包括了用于Python3.11决赛的双轮。

窗口滚轮#

此版本包含使用GitHub操作构建的Windows控制盘。

以前,它们是由 Christoph Gohlke

非常感谢Christoph在大约十年的时间里为我们构建Windows二进制文件,并在此过程中测试和修复了100多个错误修复程序,此外还为数百个Python项目构建和托管了非官方的Windows二进制文件!

增加了DDS ATI1、ATI2和BC6H读数#

添加了对读取DDS图像的ATI1、ATI2和BC6H格式的支持。

使用矩阵运算转换图像时释放GIL#

在使用矩阵运算转换图像时,现在发布了Python的全局解释器锁。

使用ImageShow显示所有帧#

当呼叫时 show() 或使用 ImageShow ,现在将显示所有帧。