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
参数,该参数指示应使用哪个滤镜进行重采样。可能的值包括: NEAREST
, BILINEAR
, BICUBIC
和 ANTIALIAS
。在这个版本中,它们几乎都被更改了。
双三次和双线性降尺度#
从一开始 BILINEAR
和 BICUBIC
滤镜基于仿射变换,并对每个目标像素使用来自源图像的固定数量的像素(2x2像素 BILINEAR
和4x4用于 BICUBIC
)。这给缩小比例带来了不令人满意的结果。同时,使用了一种高质量的卷积算法和灵活的核 ANTIALIAS
过滤。
从Pillow2.7.0开始,所有这三个过滤器都使用了基于高质量卷积的算法。
如果您以前使用任何技巧来保持质量时,使用 BILINEAR
和 BICUBIC
过滤器(例如,在几个步骤中减少),它们现在是不必要的。
Antialias更名为Lanczos#
一种新的 LANCZOS
常量被添加,而不是 ANTIALIAS
。
什么时候 ANTIALIAS
最初是添加的,它是唯一基于卷积的高质量滤光片。它的名字应该能反映这一点。从Pillow 2.7.0开始,所有调整大小的方法都是基于卷积的。从现在起,它们都是反走样。和那个人的真名 ANTIALIAS
过滤器为Lanczos过滤器。
这个 ANTIALIAS
保留常量是为了向后兼容,它是 LANCZOS
。
兰佐斯升级质量#
通过以下功能提升图像质量 LANCZOS
过滤器几乎与 BILINEAR
因为一个窃听器。此问题已修复。
双三次放大质量#
这个 BICUBIC
用于仿射变换的过滤器生成用于放大的锐化、略带像素化的图像。卷积的双三次曲线更柔和。
调整性能大小#
在大多数情况下,卷积是一种更昂贵的缩小比例的算法,因为它考虑了源图像的所有像素。因此 BILINEAR
和 BICUBIC
过滤器的性能可能会比以前低。另一方面,产品的质量 BILINEAR
和 BICUBIC
接近于 NEAREST
。因此,如果这样的质量适合您的任务,您可以切换到 NEAREST
用于缩小比例的过滤器,这将极大地提高性能。
同时,与前一版本相比,下比例卷积重采样的性能提高了大约两倍。可扩展的性能 LANCZOS
过滤器保持不变。为 BILINEAR
滤镜性能提高了1.5倍, BICUBIC
增加了四倍。
缩略图的默认筛选器#
在Pillow 2.5中,默认过滤器 thumbnail()
已从 NEAREST
至 ANTIALIAS
。之所以选择抗锯齿,是因为所有其他滤镜的还原质量都很差。从Pillow 2.7.0开始, ANTIALIAS
已被替换为 BICUBIC
,因为它更快,而且 ANTIALIAS
在使用libjpeg进行缩减后不会带来任何优势,因为libjpeg在内部使用超采样,而不是卷积。
图像转置#
一种新方法 TRANSPOSE
已为 transpose()
除了运营之外 FLIP_LEFT_RIGHT
, FLIP_TOP_BOTTOM
, ROTATE_90
, ROTATE_180
, ROTATE_270
。 TRANSPOSE
是一种代数转置,其主对角线上反射了一幅图像。
速度之快 ROTATE_90
, ROTATE_270
和 TRANSPOSE
对于处理器缓存中无法容纳的大图像,已经有了显著的改进。
高斯模糊和不锐化掩模#
这个 GaussianBlur()
实现已被一个连续应用的框式过滤器所取代。新的实现是基于“扩展盒滤波高斯卷积的理论基础”从数学图像分析组。AS UnsharpMask()
实现在内部使用高斯模糊,本章的所有更改也适用于它。
模糊半径#
在之前版本的Pillow中有一个错误,模糊半径(高斯的标准偏差)实际上意味着模糊直径。例如,要使实际半径为5的图像模糊,必须使用值10。这个问题已经解决了。现在半径的含义与其他软件中的含义相同。
如果使用了半径值为的高斯模糊,则需要将该值除以2。
模糊性能#
盒滤波器的计算时间相对于半径是恒定的,仅取决于源图像的大小。由于新的高斯模糊实现是基于盒滤波器的,其计算时间也不依赖于模糊半径。
例如,以前,如果给定测试图像的执行时间为1秒(半径为1),3.6秒(半径为10),17秒(半径为50),则现在对同一图像上的任何半径执行模糊0.2秒。
模糊质量#
以前的实现只考虑每个目标像素在2*标准偏差半径内的源像素。这是不够的,所以质量比其他高斯模糊软件更差。
新的实现没有这个缺点。
TIFF参数更改#
用于保存TIFF图像的几个Kwarg参数以前被指定为包含空格的字符串(例如“x分辨率”)。如果不建立和通过字典,很难将其用作夸克语。这些参数现在使用下划线字符而不是空格。(例如,“X”分辨率)