API更改
贬抑
ImageOps中的几个未记录函数已被弃用: gaussian_blur
, gblur
, unsharp_mask
, usm
和 box_blur
. 使用中的等效操作 ImageFilter
相反。这些功能将在将来的版本中被删除。
TIFF元数据更改
-
类型/数量未知的TIFF标记现在默认为空值(如果它们是1个元素),以前它们是一个元素元组。这只适用于新的API,而不是旧的API。这将规范对字段的处理,以便处理具有推断计数或图像指定计数的元数据与TIFF规范中指定计数的元数据相同。
-
这个
PhotoshopInfo
,XMP
和JPEGTables
标记现在具有定义的类型(字节)和计数1。 -
这个
ImageJMetaDataByteCounts
标记现在有任意数量的项,因为可以有多个项,一个用于UTF-8,一个用于UTF-16。
核心图像API更改
这些是用户代码不应该使用的内部函数,但可以从Python层访问它们。
调试代码 Image.core.grabclipboard
被移除。它被标记为 will be removed in future versions
自PIL以来。启用后,它标识剪贴板数据的格式。
这个 PIL.Image.core.copy
和 PIL.Image.Image.im.copy2
方法已被删除。
这个 PIL.Image.core.getcount
方法已被移除,使用 PIL.Image.core.get_stats()['new_count']
改为属性。
API添加
从图像中获取一个频道
一种新方法 PIL.Image.Image.getchannel()
已添加以按索引或名称返回单个通道。例如, image.getchannel("A")
将返回alpha通道作为单独的图像。 getchannel
工作速度应该比 image.split()[0]
以前的 Pillow 版本。
方形模糊
一种新的滤波器, PIL.ImageFilter.BoxBlur
,已添加。这是一个类似于高斯模糊的滤镜,但速度要快得多。
部分重采样
添加了新参数 box
对于 PIL.Image.Image.resize()
. 此参数定义要调整大小的源图像中的源矩形。这和 image.crop(box).resize(size)
除此之外的顺序 box
可指定亚像素精度。
新转置操作
这个 Image.TRANSVERSE
操作已添加到 PIL.Image.Image.transpose()
. 这相当于对对角的转置操作。
多波段滤波器
有一种新的 PIL.ImageFilter.MultibandFilter
一个操作中可以在图像的所有通道上运行的图像筛选器的基类。原文 PIL.ImageFilter.Filter
类保留用于只能处理单波段图像的图像筛选器,或者在筛选之前需要拆分通道。
其他变化
加载16位TIFF图像
Pillow现在可以读取16位多通道TIFF文件,包括阿尔法透明文件。图像数据被截断为8位精度。
Pillow现在可以读取16位有符号整数单通道TIFF文件。图像数据被提升到32位进行存储和处理。
SGI图像
Pillow现在可以读写未压缩的16位多通道SGI图像的RGB和RGBA格式。图像数据被截断为8位精度。
Pillow现在可以读取8位和16位精度RLE编码的SGI图像。
性能
此版本包含几个性能改进:
-
许多内存带宽限制的操作,如裁剪、图像分配、转换、拆分为带以及从带合并速度都快了2倍。
-
多通道图像(如RGB)的升迁速度加快了5-10%。
-
使用最新版本的libjpeg-turbo时,jpeg加载速度加快了15%,jpeg保存速度加快了20%。
-
Image.transpose
已使用缓存友好算法加速15%或更多。 -
基于核卷积的图像过滤器由于新的
MultibandFilter
特征。 -
图像的所有内存分配现在都是以块的形式进行的,而不是对大于块大小的图像的每个扫描行回滚到一个分配。
CMYK转换
基本的cmyk->rgb转换已经进行了调整,以匹配google chrome的公式。这将生成一个通常比前一个公式更轻的图像,并且更符合颜色管理应用程序生成的图像。
讨论区