Skip to content Skip to footer

图像文件格式

完全支持的格式#

BLP#

BLP是暴雪mipmap格式,是魔兽世界中使用的一种纹理格式。 Pillow 支撑阅读 JPEG 压缩或未加工 BLP1 图像和所有类型的 BLP2 图像。

储蓄#

枕头支持写入BLP图像。这个 save() 方法可以采用以下关键字参数:

blp_version如果存在并设置为“BLP1”,则图像将另存为BLP1。否则,图像将保存为BLP2。

BMP#

Pillow读写Windows和OS/2 BMP文件,其中包含 1 , L , P ,或 RGB 数据。16色图像读作 P 图像。在Pillow 9.1.0中添加了对读取8位游程编码的支持。在Pillow 9.3.0中添加了对读取4位游程编码的支持。

打开#

这个 open() 方法设置以下内容 info 性能:

compression如果文件是256色游程长度编码图像,则设置为1。如果文件是16色游程长度编码图像,则设置为2。

DDS#

DDS是视频游戏中使用的一种流行的容器纹理格式,并且受到DirectX的本地支持。未压缩的RGB和RGBA可以读取和(从8.3.0开始)写入。DXT1、DXT3(从3.4.0开始)和DXT5像素格式只能在 RGBA 模式。

DIB#

Pillow读取和写入DIB文件。DIB文件与BMP文件类似,因此请参见上面的内容了解更多信息。

在 6.0.0 版本加入.

EPS#

Pillow 识别包含图像数据的EPS文件,并可以读取包含嵌入栅格图像(图像数据描述符)的文件。如果ghostscript可用,也可以读取其他eps文件。EPS驱动程序也可以写入EPS图像。EPS驱动程序可以在 L , LAB , RGB 和 CMYK 模式,但ghostscript可以将图像转换为 RGB 模式,而不是将它们保留在原始颜色空间中。EPS驱动程序可以写入图像 L , RGB 和 CMYK 模式。

装载量#

如果Ghostscript可用,您可以调用 load() 方法,以影响Ghostscript呈现EPS的方式

scale影响生成的栅格化图像的比例。如果eps建议以100px x 100px渲染图像,则将此参数设置为2将使ghostscript渲染200px x 200px图像。边界框的相对位置保持为:

im = Image.open(...)

im.size # (100,100)

im.load(scale=2)

im.size # (200,200)

transparency如果为true,则生成透明背景的RGBA图像,而不是白色背景的RGB图像的默认行为。

GIF#

Pillow读取GIF文件格式的GIF87a和GIF89a版本。默认情况下,库使用GIF87a写入文件,除非使用了GIF89a功能或GIF89a已在使用中。文件使用LZW编码写入。

GIF文件最初以灰度形式读取 (L )或调色板模式 (P )图像。中的后续帧 P 图像将图像更改为 RGB (或 RGBA 如果第一帧具有透明度)。

P 模式图像将更改为 RGB 因为GIF的每一帧可能包含其自己的最多256色的单独调色板。当将新帧放置到前一帧上时,这些颜色可能组合在一起以超过 P 模式限制为256色。相反,该图像被转换为 RGB 处理这件事。

如果您想要第一个 P 待处理的图像帧 RGB 同样,这样每一个人 P 帧被转换为 RGB 或 RGBA 模式下,有一个可用的设置::

from PIL import GifImagePlugin

GifImagePlugin.LOADING_STRATEGY = GifImagePlugin.LoadingStrategy.RGB_ALWAYS

然而,GIF框架并不总是包含单独的调色板。如果只有一个全局调色板,则所有颜色都可以在 P 模式。如果您希望将这些帧保留为 P 在这种情况下,还可以使用以下设置:

from PIL import GifImagePlugin

GifImagePlugin.LOADING_STRATEGY = GifImagePlugin.LoadingStrategy.RGB_AFTER_DIFFERENT_PALETTE_ONLY

要恢复默认行为,请执行以下操作 P 模式图像仅转换为 RGB 或 RGBA 在第一帧之后::

from PIL import GifImagePlugin

GifImagePlugin.LOADING_STRATEGY = GifImagePlugin.LoadingStrategy.RGB_AFTER_FIRST

打开#

这个 open() 方法设置以下内容 info 性能:

background默认背景色(调色板颜色索引)。

transparency透明度颜色索引。如果图像不透明,则省略此键。

version版本(或 GIF87a 或 GIF89a )

duration可能不存在。显示GIF当前帧的时间(毫秒)。

loop可能不存在。GIF循环的次数。0表示它将永远循环。

comment可能不存在。关于这张图片的评论。这是在当前帧图像之前找到的最后一个注释。

extension可能不存在。包含特定于应用程序的信息。

读取序列#

GIF加载程序支持 seek() 和 tell() 方法。您可以将这些方法组合到下一帧 (im.seek(im.tell() + 1) )

im.seek() 提出一个 EOFError 如果你试图寻找最后一帧。

储蓄#

打电话时 save() 要写入GIF文件,可以使用以下选项:

im.save(out, save_all=True, append_images=[im1, im2, ...])

save_all如果存在且为真,则将保存图像的所有帧。如果没有,则只保存多帧图像的第一帧。

append_images要附加为附加帧的图像列表。列表中的每个图像可以是单帧或多帧图像。目前支持GIF、PDF、PNG、TIFF和WebP。

ICO和ICNS也支持它。如果传入相关大小的图像,则将使用它们,而不是缩小主图像。

include_color_table是否包括本地颜色表。

interlace图像是否交错。默认情况下,除非图像的宽度或高度小于16像素。

disposal指示图形显示后的处理方式。

0-未指定处置。

1-不要丢弃。

2-还原为背景色。

3-还原到以前的内容。

为常量释放传递一个整数,或传递一个列表或元组,分别为每个帧设置释放。

palette对保存的图像使用指定的调色板。调色板应该是一个字节或字节数组对象,其中包含rgbrgb中的调色板条目…形式。不应超过768字节。或者,调色板可以作为 PIL.ImagePalette.ImagePalette 对象。

optimize如果存在且为真,则尝试通过消除未使用的颜色来压缩调色板。只有当调色板可以压缩到2个元素的下一个较小的幂次方时,这才有用。

请注意,如果要保存的图像来自现有的GIF,则它的 info 字典。对于这些选项,如果不传递它们,它们将默认为 info 价值观。

transparency透明度颜色索引。

duration多帧GIF每帧的显示持续时间(毫秒)。为一个常量持续时间传递一个整数,或者传递一个列表或元组来分别设置每个帧的持续时间。

loopGIF应该循环的整数次。0表示它将永远循环。如果省略或 None ,则图像不会循环。

comment关于图像的评论。

读取本地图像#

GIF加载器创建与GIF文件相同大小的图像内存 logical screen size ,并粘贴实际的像素数据( local image )添加到此图像中。如果您只想要实际的像素矩形,可以裁剪图像::

im = Image.open(...)

if im.tile[0][0] == "gif":

# only read the first "local image" from this GIF file

box = im.tile[0][1]

im = im.crop(box)

ICNS#

枕头读写MacOS .icns 文件。默认情况下,最大的可用图标为Read,不过您可以通过设置 size 属性,然后调用 load() 。这个 open() 方法设置以下内容 info 属性:

备注

在8.3.0之前的版本中,Pillow只能在MacOS上写入ICNS文件。

sizes此图标文件中的支持大小列表;这些是3元组, (width, height, scale) 在哪里 scale 视网膜图标为2,标准图标为1。你 are 允许使用此3元组格式 size 属性,如果在调用前设置 load() ;加载后,大小将重置为包含像素尺寸的2元组(例如,如果您要求 (512, 512, 2) ,的最终值 size 将 (1024, 1024) )

储蓄#

这个 save() 方法可以采用以下关键字参数:

append_images用于替换图像的缩小版本的图像列表。图像的顺序并不重要,因为它们的使用取决于每个图像的大小。

在 5.1.0 版本加入.

ICO#

ICO用于在窗口上存储图标。将读取最大的可用图标。

储蓄#

这个 save() 方法支持以下选项:

sizes包括在这个ICO文件中的大小列表;这是一个2元组, (width, height) 默认为 [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)] . 任何大于原始大小或256的大小都将被忽略。

这个 save() 方法可以采用以下关键字参数:

append_images用于替换图像的缩小版本的图像列表。图像的顺序并不重要,因为它们的使用取决于每个图像的大小。

在 8.1.0 版本加入.

bitmap_format默认情况下,图像数据将以PNG格式保存。位图格式为“BMP”时,图像数据将改为以BMP格式保存。

在 8.3.0 版本加入.

IM#

IM是Labeye和其他基于ifunc图像处理库的应用程序使用的格式。库读取和写入此格式的大多数未压缩的交换版本。

IM是唯一可以存储所有内部Pillow格式的格式。

JPEG#

Pillow 读取包含 L , RGB 或 CMYK 数据。它编写标准和渐进的JFIF文件。

使用 draft() 方法,您可以通过转换 RGB 图像到 L ,并在加载图像时将其大小调整为原始大小的1/2、1/4或1/8。

默认情况下,Pillow不允许加载截断的JPEG文件,设置 ImageFile.LOAD_TRUNCATED_IMAGES 来替代这个。

打开#

这个 open() 方法可以设置以下内容 info 属性(如果可用):

jfif找到JFIF应用程序标记。如果文件不是JFIF文件,则此密钥不存在。

jfif_version表示JFIF版本(主版本、次版本)的元组。

jfif_density表示图像像素密度的元组,以jfif_单位指定的单位表示。

jfif_unitjfif_密度的单位:

0 -没有单位

每英寸1-像素

每厘米2像素

dpi一个元组,表示报告的像素密度(以每英寸像素为单位),如果文件是JFIF文件,单位为英寸。

adobe找到Adobe应用程序标记。如果文件不是Adobe JPEG文件,则此密钥不存在。

adobe_transform供应商特定标签。

progression指示这是一个渐进式JPEG文件。

icc_profile图像的ICC颜色配置文件。

exif来自图像的原始exif数据。

comment关于图像的评论。

在 7.1.0 版本加入.

储蓄#

这个 save() 方法支持以下选项:

quality图像质量,范围从0(最差)到95(最好),或字符串 keep 。默认值为75。应避免大于95的值;如果值超过100,则会禁用JPEG压缩算法的部分内容,并会导致图像质量几乎没有任何改善的大文件。它的价值 keep 仅对JPEG文件有效,并将保留原始图像质量级别、二次采样和qtable。

optimize如果存在且为真,则表示编码器应额外传递图像以选择最佳编码器设置。

progressive如果存在且为真,则表示此图像应存储为渐进式jpeg文件。

dpi表示像素密度的整数元组, (x,y) .

icc_profile如果存在且为真,图像将与提供的ICC配置文件一起存储。如果未提供此参数,则保存图像时不会附加配置文件。要保留现有配置文件,请执行以下操作:

im.save(filename, 'jpeg', icc_profile=im.info.get('icc_profile'))

exif如果存在,图像将与提供的原始exif数据一起存储。

subsampling如果存在,设置编码器的子采样。

keep :仅对jpeg文件有效,将保留原始图像设置。

4:4:4 , 4:2:2 , 4:2:0 :特定采样值

0: equivalent to 4:4:4

1: equivalent to 4:2:2

2: equivalent to 4:2:0

如果没有,设置将由libjpeg或libjpeg-turbo确定。

qtables如果存在,设置编码器的qtables。这被列为jpeg文档中向导的高级选项。小心使用。 qtables 可以是以下几种值之一:

用于命名预设的字符串,例如 keep , web_low 或 web_high

64个整数列表的列表、元组或字典(整数键=范围(len(keys))。必须有2到4张桌子。

在 2.5.0 版本加入.

comment关于图像的评论。

在 9.4.0 版本加入.

备注

要启用jpeg支持,您需要在构建python图像库之前构建和安装ijg jpeg库。有关详细信息,请参阅分发自述文件。

JPEG 2000#

在 2.4.0 版本加入.

Pillow 读取和写入包含 L , LA , RGB 或 RGBA 数据。它还可以读取包含 YCbCr 数据,在读取时转换为 RGB 或 RGBA 取决于是否有alpha通道。 Pillow 支持jpeg 2000原始代码流( .j2k 文件)以及装箱的jpeg 2000文件( .j2p 或 .jpx 文件)。 Pillow not 支持组件采样频率不同的文件。

加载时,如果设置 mode 在图像上 load() 方法,您可以要求 Pillow 将图像转换为 RGB 或 RGBA 而不是自己选择。也可以设置 reduce 到要丢弃的分辨率数(每个分辨率将生成的图像的大小减少2倍),以及 layers 指定要加载的质量层的数量。

储蓄#

这个 save() 方法支持以下选项:

offset图像偏移量,作为整数的元组,例如(16,16)

tile_offset平铺偏移量,同样是整数的2元组。

tile_size平铺大小为2元组。如果未指定,或设置为“无”,则将保存图像而不平铺。

quality_mode要么 "rates" 或 "dB" 取决于要用于指定图像质量的单位。

quality_layers一个数字序列,每一个数字代表一个近似的尺寸缩减(如果质量模式是 "rates" )或以分贝为单位的信噪比值。如果未指定,则默认为全质量的单层。

num_resolutions要存储的不同图像分辨率的数量(对应于离散小波变换分解的数量加上一个)。

codeblock_size代码块大小为2元组。最小尺寸为4 x 4,最大尺寸为1024 x 1024,附加的限制是代码块的系数不得超过4096(即两个数字的乘积不得超过4096)。

precinct_size区域大小为2元组。必须是两个轴上的二次幂,并且必须大于代码块大小。

irreversible如果 True ,使用有损离散波形变换DWT 9-7。默认为 False ,它使用无损的DWT 5-3。

mct如果 1 然后在编码时启用多分量转换,否则使用 0 表示无组件变换(默认)。如果启用了MCT,并且 irreversible 是 True 则将应用不可逆颜色转换,否则编码将使用可逆颜色转换。MCT最适合与 mode 的 RGB 并且仅当图像数据具有3个分量时才适用。

在 9.1.0 版本加入.

progression控制进展顺序;必须是 "LRCP" , "RLCP" , "RPCL" , "PCRL" , "CPRL" . 字母分别代表组件、位置、分辨率和层,并控制编码顺序,其思想是,例如,使用lrcp模式编码的图像可以在到达解码器时对其质量层进行解码,而使用rlcp模式编码的图像在到达解码器时将具有增加的解码分辨率,等等。

signed如果为True,则告诉编码器将图像另存为签名。

在 9.4.0 版本加入.

cinema_mode设置编码器以产生符合数字电影规格的输出。这里的选项是 "no" (违约), "cinema2k-24" 24FPS 2K, "cinema2k-48" 对于48fps 2K,以及 "cinema4k-24" 对于24fps 4K。请注意,对于兼容的2K文件, at least one 您的图像尺寸必须与2048 x 1080匹配,而对于兼容的4K文件, at least one 尺寸必须与4096 x 2160匹配。

no_jp2如果 True 则在保存时不要将原始码流包装为JP2文件格式,否则将使用文件的扩展名来确定格式(默认)。

在 9.1.0 版本加入.

comment向文件添加自定义注释,替换默认的“由OpenJPEG版本创建”注释。

在 9.5.0 版本加入.

plt如果 True 并且OpenJPEG2.4.0或更高版本可用,则在生成的文件中包括一个PLT(数据包长度,平铺部分报头)标记。默认为 False 。

在 9.5.0 版本加入.

备注

要启用jpeg 2000支持,您需要在构建Python图像库之前构建并安装Openjpeg库(2.0.0或更高版本)。

Windows用户可以安装openjpeg网站上提供的openjpeg二进制文件,但必须将其添加到路径中才能使用 Pillow (如果这样做失败,则会出现无法加载 _imaging DLL)。

MSP#

Pillow识别和读取来自Windows1和2的MSP文件。库写入此格式的未压缩(Windows 1)版本。

PCX#

Pillow 读取和写入包含 1 , L , P 或 RGB 数据。

PNG#

Pillow 识别、读取和写入包含 1 , L , LA , I , P , RGB 或 RGBA 数据。从v1.1.7开始支持交错文件。

从枕头6.0开始,可以从PNG图像读取exif数据。但是,与其他图像格式不同的是,exif数据不能保证存在于 info 直到 load() 已被调用。

默认情况下,Pillow不允许加载截断的PNG文件,设置 ImageFile.LOAD_TRUNCATED_IMAGES 来替代这个。

打开#

这个 open() 函数设置以下内容 info 适当时的属性:

chromaticity色度点,作为浮点数的8元组。( White Point X , White Point Y , Red X , Red Y , Green X , Green Y , Blue X , Blue Y )

gammagamma,作为浮点数给出。

srgbsRGB呈现意图为整数。

0感性

1相对比色法

2饱和度

3绝对比色法

transparency为了 P 图像:全透明像素的调色板索引,或每个调色板条目的带alpha值的字节字符串。

为了 1 , L , I 和 RGB 图像,表示此图像中完全透明像素的颜色。

如果图像不是透明调色板图像,则省略此键。

open 也设置 Image.text 一本关于 tEXt , zTXt 和 iTXt PNG图像的块。单个压缩块的解压缩大小限制为 PngImagePlugin.MAX_TEXT_CHUNK 默认为1MB,以防止减压炸弹。此外,所有文本块的总大小限制为 PngImagePlugin.MAX_TEXT_MEMORY ,默认为64MB。

储蓄#

这个 save() 方法支持以下选项:

optimize如果存在且为真,则指示PNG编写器使输出文件尽可能小。这包括额外的处理,以便找到最佳的编码器设置。

transparency为了 P , 1 , L , I 和 RGB 图像,此选项控制图像中要标记为透明的颜色。

为了 P 图像,这可以是调色板索引,也可以是每个调色板条目都有alpha值的字节字符串。

dpi在每个方向上对应于所需dpi的两个数的元组。

pnginfoA PIL.PngImagePlugin.PngInfo 实例包含块。

compress_levelzlib压缩级别,介于0和9之间的数字:1表示最佳速度,9表示最佳压缩,0表示完全没有压缩。默认值为6。什么时候? optimize 选项是真的 compress_level 无效(无论传递的值如何,它都设置为9)。

icc_profile要包含在已保存文件中的ICC配置文件。

exif要包含在已保存文件中的exif数据。

在 6.0.0 版本加入.

位(实验)为了 P 图像,此选项控制要存储的位数。如果省略,则PNG编写器使用8位(256色)。

字典(实验)设置zlib编码器字典。

备注

要启用PNG支持,您需要在构建Python成像库之前构建并安装ZLIB压缩库。请参阅 installation documentation 有关详细信息,请参阅。

APNG序列#

PNG加载器对读写动画便携网络图形(APNG)文件的支持有限。加载APNG文件时, get_format_mimetype() 将返回 "image/apng" . 的值 is_animated 财产将是 True 当 n_frames 属性大于1。对于APNG文件 n_frames 是否存在动画以及是否存在这两种情况都取决于默认的帧数。见 default_image 更多详细信息,请参阅下面的属性文档。这个 seek() 和 tell() 支持方法。

im.seek() 提出一个 EOFError 如果你试图寻找最后一帧。

这些 info 在适用的情况下,将为APNG设置以下属性:

default_image指定此APNG文件是否包含单独的默认图像,该图像不是实际APNG动画的一部分。

当APNG文件包含默认图像时,初始加载的图像(即 seek(0) )将是默认图像。要说明默认图像的存在,则 n_frames 属性将设置为 frame_count + 1 在哪里 frame_count 是实际的APNG动画帧计数。要加载第一个APNG动画帧, seek(1) 必须被调用。

True -APNG包含默认图像,它不是动画帧。

False -APNG不包含默认图像。这个 n_frames 属性将设置为实际的APNG动画帧计数。最初加载的图像(即。 seek(0) )将是第一个APNG动画帧。

loop循环此APNG的次数,0表示无限循环。

duration显示此APNG帧的时间(毫秒)。

备注

apngloader返回的图像大小与APNG文件的逻辑屏幕大小相同。在应用任何APNG帧处理和帧混合操作后,返回的图像包含给定帧的像素数据(即,它包含web浏览器将为此帧呈现的内容-所有先前帧和此帧的合成)。

任何包含序列错误的APNG文件都将被视为无效图像。APNG加载程序不会尝试修复和重新排序包含序列错误的文件。

储蓄#

当呼叫时 save() 默认情况下,将仅存储单帧PNG文件。要保存APNG文件(包括单帧APNG), save_all 参数必须设置为 True 。还可以设置以下参数:

default_image布尔值,指定基础图像是否为默认图像。如果 True ,基础映像将用作默认映像,并且 append_images 序列将是第一个APNG动画帧。如果 False ,基础图像将用作第一个APNG动画帧。默认为 False .

append_images作为附加帧附加的图像的列表或元组。列表中的每个图像可以是单帧或多帧图像。每个帧的大小应该与基本图像的大小相匹配。另外请注意,如果帧的模式与基础图像的模式不匹配,则该帧将转换为基本图像模式。

loop整数循环此APNG的次数,0表示无限循环。默认为0。

duration整数(或整数的列表或元组)显示此APNG帧的时间长度(毫秒)。默认为0。

disposal一个整数(或整数的列表或元组),指定在呈现下一帧之前要用于此帧的APNG处理操作。默认为0。

0 (OP_NONE ,默认为)-在渲染下一帧之前不会对该帧进行任何处理。

1 (PIL.PngImagePlugin.Disposal.OP_BACKGROUND )-在渲染下一帧之前,该帧的修改区域被清除为完全透明的黑色。

2 (OP_PREVIOUS )-此帧的修改区域在渲染下一帧之前恢复为上一帧的内容。

blend一个整数(或整数的列表或元组),指定要在呈现下一帧之前用于此帧的APNG混合操作。默认为0。

0 (OP_SOURCE )-此帧的所有颜色分量(包括Alpha)将覆盖以前的输出图像内容。

1 (OP_OVER )-此帧应与先前的输出图像内容进行Alpha合成。

备注

这个 duration , disposal 和 blend 参数可以设置为列表或元组,以指定动画中每个帧的值。列表或元组的长度必须与APNG动画中实际帧的总数相同。如果APNG包含默认图像(即。 default_image 设置为 True ),这些列表或元组参数不应包含默认图像的条目。

PPM#

Pillow读写包含以下内容的PBM、PGM、PPM和PNM文件 1 , L , I 或 RGB 数据。

“Raw”(P4至P6)格式可以读取,并在写入时使用。

从枕头9.2.0开始,“纯”(P1至P3)格式也可以阅读。

SGI#

Pillow 读写未压缩 L , RGB 和 RGBA 文件夹。

SPIDER#

Pillow读取和写入32位浮点数据的蜘蛛图像文件(“F;32F”)。

枕头还读取包含蜘蛛图像序列的蜘蛛堆栈文件。这个 seek() 和 tell() 支持方法,允许随机访问。

打开#

这个 open() 方法设置以下属性:

format设置为 SPIDER

istack如果文件是图像堆栈,则设置为1,否则设置为0。

n_frames设置为堆栈中的图像数。

一种方便的方法, convert2byte() ,用于将浮点数据转换为字节数据(模式 L ):

im = Image.open("image001.spi").convert2byte()

储蓄#

spider文件的扩展名可以是任意3个字母数字字符。因此,必须明确指定输出格式:

im.save('newimage.spi', format='SPIDER')

有关Spider图像处理包的更多信息,请参阅https://github.com/spider-em/SPIDER

TGA#

Pillow 读写包含 L , LA , P , RGB 和 RGBA 数据。 Pillow 可以读写未压缩和运行长度编码的TGA。

储蓄#

这个 save() 方法可以采用以下关键字参数:

compression如果设置为“TGA_RLE”,文件将进行游程长度编码。

在 5.3.0 版本加入.

id_section标识字段。

在 5.3.0 版本加入.

orientation如果存在且为正数,则第一个像素用于左上角,而不是左下角。

在 5.3.0 版本加入.

TIFF#

Pillow读写TIFF文件。它可以读取条纹图像和平铺图像,像素和平面交错多波段图像。如果您安装了libtiff及其头文件,那么bellow可以读写多种压缩的tiff文件。否则,Pillow只能读写未压缩的文件。

备注

从5.0.0版开始,Pillow需要libtiff读取或写入压缩文件。在该版本发布之前,Pillow支持在不使用libtiff的情况下读取packbits、lzw和jpeg压缩的tiff。

打开#

这个 open() 方法设置以下内容 info 性能:

compression压缩模式。

在 2.0.0 版本加入.

dpi图像分辨率 (xdpi, ydpi) tuple,如适用。你可以使用 tag 属性获取有关图像分辨率的详细信息。

在 1.1.5 版本加入.

resolution图像分辨率 (xres, yres) tuple,如适用。这是以文件指定的单位为单位的度量。

在 1.1.5 版本加入.

这个 tag_v2 属性包含TIFF元数据字典。关键是数字索引 TiffTags.TAGS_V2 . 值是单个项的字符串或数字,在一个值元组中返回多个值。有理数返回为 IFDRational 对象。

在 3.0.0 版本加入.

为了与旧代码兼容,请 tag 属性包含版本3.0.0之前返回的已解码TIFF字段的字典。值作为数值的字符串或元组返回。有理数作为元组返回 (numerator, denominator) .

自 3.0.0 版本弃用.

读取多帧TIFF图像#

TIFF加载器支持 seek() 和 tell() 方法,获取并返回图像文件中的帧号。您可以组合这些方法以查找到下一帧 (im.seek(im.tell() + 1) )。帧的编号从0到 im.n_frames - 1 ,并且可以按任何顺序访问。

im.seek() 提出一个 EOFError 如果你试图寻找最后一帧。

储蓄#

这个 save() 方法可以采用以下关键字参数:

save_all如果为真,Pillow将把图像的所有帧保存到多帧TIFF文档中。

在 3.4.0 版本加入.

append_images附加为附加帧的图像列表。列表中的每个图像都可以是单帧或多帧图像。但是请注意,为了得到正确的结果,所有附加的图像都应该相同 encoderinfo 和 encoderconfig 性质。

在 4.2.0 版本加入.

tiffinfoA ImageFileDirectory_v2 包含TIFF标记和值的对象或dict对象。TIFF字段类型是自动检测数值和字符串值的,任何其他类型都需要使用 ImageFileDirectory_v2 对象并设置输入 tagtype 具有适当的数值来自 TiffTags.TYPES .

在 2.3.0 版本加入.

应使用 IFDRational 对象。

在 3.1.0 版本加入.

为了与旧代码兼容,a ImageFileDirectory_v1 对象可以在此字段中传递。然而,这是不赞成的。

在 5.4.0 版本加入.

以前的版本在使用libtiff编写时只支持一些标记。支持的列表位于 TiffTags.LIBTIFF_CORE .

在 6.1.0 版本加入.

增加了对签名类型的支持(例如 TIFF_SIGNED_LONG )以及多个值。单个标记的多个值必须为 ImageFileDirectory_v2 作为元组并需要匹配的类型 tagtype 标记类型。

exif将关键字替换为“tiffinfo”,以与其他格式保持一致。

在 8.4.0 版本加入.

compression包含文件所需压缩方法的字符串。(仅在安装了libtiff的情况下有效)有效的压缩方法包括: None , "group3" , "group4" , "jpeg" , "lzma" , "packbits" , "tiff_adobe_deflate" , "tiff_ccitt" , "tiff_lzw" , "tiff_raw_16" , "tiff_sgilog" , "tiff_sgilog24" , "tiff_thunderscan" , "webp" , "zstd"

qualityjpeg压缩的图像质量,从0(最差)到100(最好)。默认值为75。

在 6.1.0 版本加入.

设置TIFF头字段的这些参数是使用TiffInfo提供的常规标记的替代方法。

description

software

date_time

artist

copyright字符串

icc_profile要包含在已保存文件中的ICC配置文件。

resolution_unit一个整数。1表示无单位,2表示英寸,3表示厘米。

resolution整数或浮点数,用于x和y分辨率。

x_resolution整数或浮点数。

y_resolution整数或浮点数。

dpi一个元组 (x_resolution, y_resolution) ,以英寸为分辨率单位。为了与其他图像格式保持一致,dpi的x和y分辨率将舍入为最接近的整数。

韦伯#

Pillow读写webp文件。目前,这种形式Pillow功能的具体细节尚未记录在案。

储蓄#

这个 save() 方法支持以下选项:

lossless如果存在且为真,则指示WebP编写器使用无损压缩。

quality0-100的整数,默认为80。对于损耗,0表示最小尺寸,100表示最大尺寸。对于无损压缩,此参数是用于压缩的工作量:0是最快的,但与最慢但最好的100相比,它提供的文件更大。

method质量/速度权衡(0=快,6=慢-好)。默认为4。

exact如果为True,则保留透明的RGB值。否则,丢弃不可见的RGB值以获得更好的压缩效果。默认为False。需要libwebp 0.5.0或更高版本。

icc_profile要包含在已保存文件中的ICC配置文件。仅当系统WebP库是使用WebPMUX支持构建时才受支持。

exif要包含在已保存文件中的exif数据。仅当系统WebP库是使用WebPMUX支持构建时才受支持。

xmp要包括在保存的文件中的XMP数据。仅当系统WebP库构建时具有Webpmux支持时才受支持。

保存序列#

备注

仅当系统WebP库为v0.5.0或更高版本时,才会启用对动画WebP文件的支持。您可以在运行时通过调用 features.check("webp_anim") .

当呼叫时 save() 要写入WebP文件,默认情况下将只存储多帧图像的第一帧。如果 save_all 参数存在且为真,则将保存所有帧,并且下列选项也将可用。

append_images附加为附加帧的图像列表。列表中的每个图像都可以是单帧或多帧图像。

duration每帧的显示持续时间(毫秒)。为一个常量持续时间传递一个整数,或者传递一个列表或元组来分别设置每个帧的持续时间。

loop重复动画的次数。默认为[0=无限]。

background画布的背景色,作为值在(0-255)范围内的rgba元组。

minimize_size如果为真,则最小化输出大小(慢)。隐式禁用关键帧插入。

kmin, kmax输出中连续关键帧之间的最小和最大距离。库可以根据需要插入一些关键帧以满足此条件。注意,这些条件应保持:kmax>kmin和kmin>=kmax/2+1。此外,如果kmax<=0,则禁用关键帧插入;如果kmax==1,则所有帧都将是关键帧(kmin值对于这些特殊情况不重要)。

allow_mixed如果为真,则使用混合压缩模式;编码器试探性地在每帧的有损和无损之间进行选择。

XBM#

Pillow 读取和写入X位图文件(模式 1 )