8.3.0#

废弃#

JpegImagePlugin.convert_dict_qtables#

JPEG quantization 现在自动转换,但仍作为词典返回。这个 convert_dict_qtables 方法不再对提供给它的数据执行任何操作,已被弃用,将在Pillow 10.0.0(2023-07-01)中删除。

API更改#

保存时更改WebP默认“方法”值#

以前,它是0,表示最佳速度。默认值现在已更改为4,以匹配WebP的默认值,以获得更高的质量,同时仍有一些速度优化。

特殊图像模式的默认重采样过滤#

Pillow7.0将默认重采样过滤更改为 Image.BICUBIC 。但是,由于具有自定义位数的图像尚不支持此功能,因此这些模式的默认过滤已恢复为 Image.NEAREST

ImageMorph错误模式错误#

apply()match()get_on_pixels() ,如果图像模式不是L,则引发 Exception 被扔出去了。现在,它已更改为 ValueError

getxmp()#

XMP data 现在可以为PNG和TIFF图像返回,通过 getxmp() 对于每种格式。

返回的字典将从XML的底部开始,这意味着顶层应该包含一个“xmpmeta”键。JPEG的 getxmp() 方法也已更新到此结构。

TIFF getexif()#

TIFF tag_v2 现在可以通过以下方式访问数据 getexif() 。这也提供了对GPS和EXIF IFDS的访问,通过 im.getexif().get_ifd(0x8825)im.getexif().get_ifd(0x8769) 分别为。

API添加#

ImageOps.contain#

返回图像的调整大小版本,设置为中的最大宽度和高度 size ,同时保持原始纵横比。

要将其与其他ImageOps方法进行比较,请执行以下操作:

  • fit() 扩展图像,直到填充为止 size ,裁剪图像中不适合的部分。

  • pad() 将图像展开以填充 size ,而不裁剪,而是用来填充额外的空间 color

  • contain() 类似于 pad() ,但它不会填满额外的空间。相反,将保持原始纵横比。因此,与其他两个方法不同,它不能保证返回 size

ICO保存:BITMAP_FORMAT参数#

默认情况下,枕头以PNG格式存储ICO文件。它们现在还可以保存为BMP格式,通过新的 bitmap_format 参数::

im.save("out.ico", bitmap_format="bmp")

安全性#

缓冲区溢出#

此版本针对 CVE-2021-34552 。从1.1.4开始的PIL和从1.0开始的Pillow允许将参数传递给Convert函数以触发Convert.c中的缓冲区溢出。

解析XML#

Pillow之前使用Python的 xml 模块。但是,此模块不安全。

  • getexif() 已经使用了 xml 以潜在地检索枕头7.2.0以后的定位数据。它已被重构以使用 re 取而代之的是。

  • getxmp() 是在枕头8.2.0中添加的。它现在将使用 defusedxml 取而代之的是。如果依赖项不存在,将返回空字典并发出警告。

其他变化#

添加了DDS BC5读取和解压缩保存#

添加了读取DDS图像的BC5格式的支持,无论是UN RM、SNORM还是TYPELESS。

还添加了对写入DDS图像的未压缩格式的支持。