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”分辨率)