请稍候,加载中....

2.7.0

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 参数,指示应使用哪个筛选器重新采样。可能的值是: PIL.Image.NEARESTPIL.Image.BILINEARPIL.Image.BICUBICPIL.Image.ANTIALIAS .在这个版本中,几乎所有的内容都被更改了。

双三次和双线性降尺度

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

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

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

Antialias更名为Lanczos

一个新的 PIL.Image.LANCZOS 添加常量而不是 ANTIALIAS .

什么时候? ANTIALIAS 最初添加,它是唯一基于卷积的高质量滤波器。它的名字应该能反映这一点。从枕头2.7.0开始,所有调整大小的方法都基于卷积。从现在起它们都是抗利尿药。以及 ANTIALIAS 过滤器为Lanczos过滤器。

这个 ANTIALIAS 常量用于向后兼容,是的别名 LANCZOS .

兰佐斯升级质量

图像向上缩放质量 LANCZOS 过滤器几乎和 BILINEAR 由于BUG。这个问题已经解决了。

双三次放大质量

这个 BICUBIC 用于仿射变换的过滤器生成了清晰的、稍微像素化的图像,以便进行升迁。双三次卷积更柔软。

调整性能大小

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

同时,卷积重采样的降尺度性能比以前的版本提高了大约2倍。的升级性能 LANCZOS 过滤器保持不变。为了 BILINEAR 过滤性能提高1.5倍 BICUBIC 四倍。

缩略图的默认筛选器

枕头2.5中的默认过滤器 thumbnail() 已从更改 NEARESTANTIALIAS . 选择抗锯齿是因为所有其他过滤器的还原质量较差。从枕头2.7.0开始, ANTIALIAS 已被替换为 BICUBIC 因为它更快而且 ANTIALIAS 使用libjpeg缩小后没有任何优势,它在内部使用过采样,而不是卷积。

图像转置

一种新方法 PIL.Image.TRANSPOSE 已为添加 transpose() 除此之外的操作 FLIP_LEFT_RIGHTFLIP_TOP_BOTTOMROTATE_90ROTATE_180ROTATE_270 . TRANSPOSE 是一个代数转置,图像在其主对角线上反射。

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


Python学习手册-