python图像库支持各种各样的栅格文件格式。库可以识别和读取30多种不同的文件格式。写支持不那么广泛,但支持最常见的交换和表示格式。
这个 open()
函数从文件的内容中标识文件,而不是文件名,而是 save()
方法检查名称以确定要使用的格式,除非显式给定了该格式。
从文件打开图像时,只有该图像的实例被视为具有该格式。图像的副本将包含从文件加载的数据,但不包含文件本身,这意味着它不再被视为原始格式。所以如果 copy()
,或者另一个方法在内部创建该图像的副本,则 fp
(文件指针),以及特定于格式的任何方法和属性。这个 format
属性将是 None
。
完全支持的格式
目录
BMP
Pillow 读取和写入Windows和OS/2 BMP文件,其中包含 1
, L
, P
或 RGB
数据。16幅彩色图像读作 P
图像。不支持运行长度编码。
- compression
-
设置为
bmp_rle
如果文件是运行长度编码的。
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读取GIF87A和GIF89A版本的GIF文件格式。除非使用了gif89a功能或gif89a已经在使用,否则库默认情况下会在gif87a中写入运行长度编码的文件。
请注意,GIF文件总是以灰度形式读取。( L
)或调色板模式( P
)图像。
- 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每帧的显示持续时间(毫秒)。为一个常量持续时间传递一个整数,或者传递一个列表或元组来分别设置每个帧的持续时间。
- loop
-
整数GIF应循环的次数。0表示它将永远循环。默认情况下,图像不会循环。
- comment
-
关于图像的评论。
读取本地图像
GIF加载器创建与GIF文件大小相同的图像内存 逻辑屏幕大小 像素和实际数据 局部图像 )在这个图像中。如果只需要实际的像素矩形,可以操纵 size
和 tile
加载文件前的属性:
im = Image.open(...)
if im.tile[0][0] == "gif":
# only read the first "local image" from this GIF file
tag, (x0, y0, x1, y1), offset, extra = im.tile[0]
im.size = (x1 - x0, y1 - y0)
im.tile = [(tag, (0, 0) + im.size, offset, extra)]
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_unit
-
jfif_密度的单位:
-
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(最佳)。默认值为75。应避免大于95的值;100禁用部分JPEG压缩算法,并导致大文件几乎没有任何图像质量增益。
- 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
:特定采样值 -
-1
: equivalent tokeep
-
0
: equivalent to4:4:4
-
1
: equivalent to4:2:2
-
2
: equivalent to4:2:0
-
- qtables
-
如果存在,设置编码器的qtables。这被列为jpeg文档中向导的高级选项。小心使用。
qtables
可以是以下几种值之一:-
用于命名预设的字符串,例如
keep
,web_low
或web_high
-
64个整数列表的列表、元组或字典(整数键=范围(len(keys))。必须有2到4张桌子。
2.5.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可逆的颜色转换。 - progression
-
控制进展顺序;必须是
"LRCP"
,"RLCP"
,"RPCL"
,"PCRL"
,"CPRL"
. 字母分别代表组件、位置、分辨率和层,并控制编码顺序,其思想是,例如,使用lrcp模式编码的图像可以在到达解码器时对其质量层进行解码,而使用rlcp模式编码的图像在到达解码器时将具有增加的解码分辨率,等等。 - 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匹配。
注解
要启用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
) - gamma
-
gamma,作为浮点数给出。
- srgb
-
sRGB呈现意图为整数。
-
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的两个数的元组。
- pnginfo
-
A
PIL.PngImagePlugin.PngInfo
实例包含块。 - compress_level
-
zlib压缩级别,介于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 (
APNG_DISPOSE_OP_NONE
,默认)-在渲染下一帧之前,不会对该帧执行任何处理。 -
1 (
PIL.PngImagePlugin.APNG_DISPOSE_OP_BACKGROUND
)-在渲染下一帧之前,此帧的修改区域被清除为完全透明的黑色。 -
2 (
APNG_DISPOSE_OP_PREVIOUS
)-在呈现下一帧之前,此帧的修改区域将恢复为上一帧的内容。
-
- blend
-
一个整数(或整数的列表或元组),指定要在呈现下一帧之前用于此帧的APNG混合操作。默认为0。
-
0 (
APNG_BLEND_OP_SOURCE
)-此帧的所有颜色组件(包括alpha)覆盖先前输出的图像内容。 -
1 (
APNG_BLEND_OP_OVER
)-此帧应与以前的输出图像内容进行alpha合成。
-
注解
这个 duration
, disposal
和 blend
参数可以设置为列表或元组,以指定动画中每个帧的值。列表或元组的长度必须与APNG动画中实际帧的总数相同。如果APNG包含默认图像(即。 default_image
设置为 True
),这些列表或元组参数不应包含默认图像的条目。
PPM
Pillow 读取和写入PBM、PGM、PPM和PNM文件,其中包含 1
, L
或 RGB
数据。
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 homepage 在 Wadsworth Center .
TGA
Pillow 读写包含 L
, LA
, P
, RGB
和 RGBA
数据。 Pillow 可以读写未压缩和运行长度编码的TGA。
TIFF
Pillow读写TIFF文件。它可以读取条纹图像和平铺图像,像素和平面交错多波段图像。如果您安装了libtiff及其头文件,那么bellow可以读写多种压缩的tiff文件。否则,Pillow只能读写未压缩的文件。
注解
从5.0.0版开始,Pillow需要libtiff读取或写入压缩文件。在该版本发布之前,Pillow支持在不使用libtiff的情况下读取packbits、lzw和jpeg压缩的tiff。
- 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
如果你试图寻找最后一帧。
保存TIFF图像
这个 save()
方法可以采用以下关键字参数:
- save_all
-
如果为真,Pillow将把图像的所有帧保存到多帧TIFF文档中。
3.4.0 新版功能.
- append_images
-
附加为附加帧的图像列表。列表中的每个图像都可以是单帧或多帧图像。但是请注意,为了得到正确的结果,所有附加的图像都应该相同
encoderinfo
和encoderconfig
性质。4.2.0 新版功能.
- tiffinfo
-
A
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”
- quality
-
jpeg压缩的图像质量,从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_分辨率,y_分辨率),以英寸为分辨率单位。为了与其他图像格式保持一致,dpi的x和y分辨率将四舍五入为最接近的整数。
韦伯
Pillow读写webp文件。目前,这种形式Pillow功能的具体细节尚未记录在案。
这个 save()
方法支持以下选项:
- lossless
-
如果存在且为真,则指示WebP编写器使用无损压缩。
- quality
-
整数,1-100,默认为80。对于有损,0表示最小尺寸,100表示最大尺寸。对于无损,此参数是压缩所需的工作量:0是最快的,但与最慢但最好的100相比,它提供了更大的文件。
- method
-
质量/速度权衡(0=快,6=慢-好)。默认为4。
- icc_profile
-
要包含在已保存文件中的ICC配置文件。仅当系统WebP库是使用WebPMUX支持构建时才受支持。
- exif
-
要包含在已保存文件中的exif数据。仅当系统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
)
只读格式
BLP
BLP是暴雪mipmap格式,是魔兽世界中使用的一种纹理格式。 Pillow 支撑阅读 JPEG
压缩或未加工 BLP1
图像和所有类型的 BLP2
图像。
CUR
cur用于在Windows上存储光标。cur解码器读取最大的可用光标。不支持动画光标。
DCX
DCX是由Intel定义的PCX文件的容器文件格式。DCX格式通常用于传真应用程序。DCX解码器可以读取包含 1
, L
, P
或 RGB
数据。
打开文件时,只读取第一个图像。你可以使用 seek()
或 ImageSequence
阅读其他图像。
FLC
Pillow阅读欧特克FLI和FLC动画。
- duration
-
每帧之间的延迟(毫秒)。
FPX
Pillow读柯达Flashpix文件。在当前版本中,只从文件中读取最高分辨率的图像,而不考虑查看转换。
注解
要启用完全的FlashPix支持,您需要在构建Python图像库之前构建并安装ijg jpeg库。有关详细信息,请参阅分发自述文件。
FTEX
3.2.0 新版功能.
ftex解码器读取独立战争2:混乱边缘中用于3D对象的纹理。该插件以压缩和未压缩格式读取每个文件的单个纹理。
GBR
GBR解码器读取gimp brush文件,版本1和2。
- comment
-
画笔名称。
- spacing
-
画笔之间的间距,以像素为单位。只有2版。
GD
Pillow 读取未压缩的gd2文件。请注意,您必须使用 PIL.GdImageFile.open()
读取这样的文件。
- transparency
-
透明度颜色索引。如果图像不透明,则省略此键。
IMT
Pillow 读取图像工具图像包含 L
数据。
IPTC/NAA
Pillow为IPTC/NAA新闻照片文件提供有限的读取支持。
MCIDAS
Pillow识别和读取8位MCIDAS区域文件。
MIC
枕头识别并读取Microsoft Image Composer(麦克风)文件。打开时,将加载文件中的第一个sprite。你可以使用 seek()
和 tell()
从文件中读取其他精灵。
请注意,MIC文件中可能有2.2的嵌入gamma。
MPO
枕头识别和读取多图像对象(MPO)文件,首次打开时加载主图像。这个 seek()
和 tell()
方法可用于从文件中读取其他图片。图片索引为零,支持随机访问。
PCD
Pillow 读取包含 RGB
数据。这只从文件中读取768x512分辨率图像。更高的分辨率采用专有编码。
PIXAR
Pillow为Pixar栅格文件提供有限的支持。库可以识别和读取“转储”的RGB文件。
格式代码为 PIXAR
.
PSD
Pillow识别和读取由Adobe Photoshop 2.5和3.0编写的PSD文件。
WAL
1.1.4 新版功能.
Pillow上写着Quake2 Wal纹理文件。
请注意,无法自动识别此文件格式,因此必须在 WalImageFile
用于读取此格式文件的模块。
默认情况下,Quake2标准调色板将附加到纹理。要覆盖调色板,请使用putpalate方法。
WMF
枕头可以识别WMF文件。
在Windows上,它可以读取WMF文件。默认情况下,它将以72 dpi的速度加载图像。要以其他分辨率加载:
from PIL import Image
with Image.open("drawing.wmf") as im:
im.load(dpi=144)
要添加其他读或写支持,请使用 PIL.WmfImagePlugin.register_handler()
注册WMF处理程序。
from PIL import Image
from PIL import WmfImagePlugin
class WmfHandler:
def open(self, im):
...
def load(self, im):
...
return image
def save(self, im, fp, filename):
...
wmf_handler = WmfHandler()
WmfImagePlugin.register_handler(wmf_handler)
im = Image.open("sample.wmf")
XPM
Pillow 读取x pixmap文件(模式 P
)256色或更少。
- transparency
-
透明度颜色索引。如果图像不透明,则省略此键。
只写格式
PALM
Pillow为Palm PixMap文件提供只写支持。
格式代码为 Palm
,扩展名为 .palm
.
Pillow可以写PDF(Acrobat)图像。这些图像以二进制PDF 1.4文件的形式写入,根据图像模式使用jpeg或hex编码(以及是否支持jpeg)。
这个 save()
方法可以采用以下关键字参数:
- save_all
-
如果使用多帧图像,默认情况下,只保存第一个图像。要将所有帧、每个帧保存到PDF的单独页面,请
save_all
参数必须存在并设置为True
.3.0.0 新版功能.
- append_images
-
一份名单
PIL.Image.Image
要作为附加页追加的对象。列表中的每个图像可以是单帧或多帧图像。这个save_all
参数必须存在并设置为True
与append_images
。4.2.0 新版功能.
- append
-
设置为true可将页面附加到现有的PDF文件。如果文件不存在,则
OSError
将被提升。5.1.0 新版功能.
- resolution
-
DPI中的图像分辨率。这与图像中的像素数一起,将决定将保存在PDF中的页面的物理尺寸。
- title
-
文档的标题。如果不附加到现有的PDF文件,则默认为文件名。
5.1.0 新版功能.
- author
-
创建文档的人员的名称。
5.1.0 新版功能.
- subject
-
文件的主题。
5.1.0 新版功能.
- keywords
-
与文档关联的关键字。
5.1.0 新版功能.
- creator
-
如果文档是从其他格式转换为PDF格式的,则为创建原始文档的一致性产品的名称。
5.1.0 新版功能.
- producer
-
如果文档是从另一种格式转换为PDF格式,则转换为PDF格式的合格产品的名称。
5.1.0 新版功能.
- creationDate
-
文档的创建日期。如果不附加到现有的PDF文件,则默认为当前时间。
5.3.0 新版功能.
- modDate
-
文件的修改日期。如果不附加到现有的PDF文件,则默认为当前时间。
5.3.0 新版功能.
XV缩略图
Pillow可以读取xv缩略图文件。
仅标识格式
BUFR
1.1.3 新版功能.
Pillow为bufr文件提供了一个存根驱动程序。
要向应用程序添加读或写支持,请使用 PIL.BufrStubImagePlugin.register_handler()
.
FITS
1.1.5 新版功能.
Pillow提供了适合文件的存根驱动程序。
要向应用程序添加读或写支持,请使用 PIL.FitsStubImagePlugin.register_handler()
.
GRIB
1.1.5 新版功能.
Pillow为grib文件提供了一个存根驱动程序。
驱动程序要求文件以grib头开始。如果您有嵌入GRib数据的文件,或者有多个GRib字段的文件,那么您的应用程序必须在将文件句柄传递到Pillow之前找到头部。
要向应用程序添加读或写支持,请使用 PIL.GribStubImagePlugin.register_handler()
.
HDF5
1.1.5 新版功能.
Pillow为HDF5文件提供了一个存根驱动程序。
要向应用程序添加读或写支持,请使用 PIL.Hdf5StubImagePlugin.register_handler()
.
MPEG
Pillow识别MPEG文件。
讨论区