2.7.0#

理智插件#

SANE插件现在被拆分为自己的repo:https://github.com/python-bellow/sane

PNG文本块大小限制#

为了防止使用压缩文本块的潜在拒绝服务攻击,现在对从PNG图像解码的文本块的解压缩大小有限制。如果在打开PNG图像时超出限制 ValueError 都会被举起。

单个文本块仅限于 PIL.PngImagePlugin.MAX_TEXT_CHUNK ,默认设置为1MB。所有文本块的总解压缩大小限制为 PIL.PngImagePlugin.MAX_TEXT_MEMORY ,默认为64MB。如果知道需要大的文本块,可以在打开PNG图像之前更改这些值。

图像大小调整过滤器#

图像大小调整方法 resize()thumbnail() 拿一个 resample 参数,该参数指示应使用哪个滤镜进行重采样。可能的值包括: NEARESTBILINEARBICUBICANTIALIAS 。在这个版本中,它们几乎都被更改了。

双三次和双线性降尺度#

从一开始 BILINEARBICUBIC 滤镜基于仿射变换,并对每个目标像素使用来自源图像的固定数量的像素(2x2像素 BILINEAR 和4x4用于 BICUBIC )。这给缩小比例带来了不令人满意的结果。同时,使用了一种高质量的卷积算法和灵活的核 ANTIALIAS 过滤。

从Pillow2.7.0开始,所有这三个过滤器都使用了基于高质量卷积的算法。

如果您以前使用任何技巧来保持质量时,使用 BILINEARBICUBIC 过滤器(例如,在几个步骤中减少),它们现在是不必要的。

Antialias更名为Lanczos#

一种新的 LANCZOS 常量被添加,而不是 ANTIALIAS

什么时候 ANTIALIAS 最初是添加的,它是唯一基于卷积的高质量滤光片。它的名字应该能反映这一点。从Pillow 2.7.0开始,所有调整大小的方法都是基于卷积的。从现在起,它们都是反走样。和那个人的真名 ANTIALIAS 过滤器为Lanczos过滤器。

这个 ANTIALIAS 保留常量是为了向后兼容,它是 LANCZOS

兰佐斯升级质量#

通过以下功能提升图像质量 LANCZOS 过滤器几乎与 BILINEAR 因为一个窃听器。此问题已修复。

双三次放大质量#

这个 BICUBIC 用于仿射变换的过滤器生成用于放大的锐化、略带像素化的图像。卷积的双三次曲线更柔和。

调整性能大小#

在大多数情况下,卷积是一种更昂贵的缩小比例的算法,因为它考虑了源图像的所有像素。因此 BILINEARBICUBIC 过滤器的性能可能会比以前低。另一方面,产品的质量 BILINEARBICUBIC 接近于 NEAREST 。因此,如果这样的质量适合您的任务,您可以切换到 NEAREST 用于缩小比例的过滤器,这将极大地提高性能。

同时,与前一版本相比,下比例卷积重采样的性能提高了大约两倍。可扩展的性能 LANCZOS 过滤器保持不变。为 BILINEAR 滤镜性能提高了1.5倍, BICUBIC 增加了四倍。

缩略图的默认筛选器#

在Pillow 2.5中,默认过滤器 thumbnail() 已从 NEARESTANTIALIAS 。之所以选择抗锯齿,是因为所有其他滤镜的还原质量都很差。从Pillow 2.7.0开始, ANTIALIAS 已被替换为 BICUBIC ,因为它更快,而且 ANTIALIAS 在使用libjpeg进行缩减后不会带来任何优势,因为libjpeg在内部使用超采样,而不是卷积。

图像转置#

一种新方法 TRANSPOSE 已为 transpose() 除了运营之外 FLIP_LEFT_RIGHTFLIP_TOP_BOTTOMROTATE_90ROTATE_180ROTATE_270TRANSPOSE 是一种代数转置,其主对角线上反射了一幅图像。

速度之快 ROTATE_90ROTATE_270TRANSPOSE 对于处理器缓存中无法容纳的大图像,已经有了显著的改进。

高斯模糊和不锐化掩模#

这个 GaussianBlur() 实现已被一个连续应用的框式过滤器所取代。新的实现是基于“扩展盒滤波高斯卷积的理论基础”从数学图像分析组。AS UnsharpMask() 实现在内部使用高斯模糊,本章的所有更改也适用于它。

模糊半径#

在之前版本的Pillow中有一个错误,模糊半径(高斯的标准偏差)实际上意味着模糊直径。例如,要使实际半径为5的图像模糊,必须使用值10。这个问题已经解决了。现在半径的含义与其他软件中的含义相同。

如果使用了半径值为的高斯模糊,则需要将该值除以2。

模糊性能#

盒滤波器的计算时间相对于半径是恒定的,仅取决于源图像的大小。由于新的高斯模糊实现是基于盒滤波器的,其计算时间也不依赖于模糊半径。

例如,以前,如果给定测试图像的执行时间为1秒(半径为1),3.6秒(半径为10),17秒(半径为50),则现在对同一图像上的任何半径执行模糊0.2秒。

模糊质量#

以前的实现只考虑每个目标像素在2*标准偏差半径内的源像素。这是不够的,所以质量比其他高斯模糊软件更差。

新的实现没有这个缺点。

TIFF参数更改#

用于保存TIFF图像的几个Kwarg参数以前被指定为包含空格的字符串(例如“x分辨率”)。如果不建立和通过字典,很难将其用作夸克语。这些参数现在使用下划线字符而不是空格。(例如,“X”分辨率)