完全支持的格式¶
目录
图像文件格式
完全支持的格式
BMP
DIB
EPS
GIF
读取序列
储蓄
读取本地图像
ICNS
ICO
IM
JPEG
JPEG 2000
MSP
PCX
PNG
PPM
SGI
SPIDER
以蜘蛛格式写入文件
TGA
TIFF
读取多帧TIFF图像
保存TIFF图像
韦伯
保存序列
XBM
只读格式
BLP
CUR
DCX
DDS
FLC
FPX
FTEX
GBR
GD
IMT
IPTC/NAA
MCIDAS
MIC
MPO
PCD
PIXAR
PSD
WAL
WMF
XPM
只写格式
PALM
XV缩略图
仅标识格式
BUFR
FITS
GRIB
HDF5
MPEG
BMP¶
Pillow 读取和写入Windows和OS/2 BMP文件,其中包含 1 , L , P 或 RGB 数据。16幅彩色图像读作 P 图像。不支持运行长度编码。
这个 open() 方法设置以下内容 info 性能:
compression设置为 bmp_rle 如果文件是运行长度编码的。
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)
GIF¶
Pillow读取GIF87A和GIF89A版本的GIF文件格式。除非使用了gif89a功能或gif89a已经在使用,否则库默认情况下会在gif87a中写入运行长度编码的文件。
请注意,GIF文件总是以灰度形式读取。( L )或调色板模式( P )图像。
这个 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、TIFF和WebP都支持此功能。
它还支持ICN。如果图像以相关大小传入,则将使用它们而不是缩小主图像。
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¶
Pillow 阅读和(仅限MacOS)写MacOS .icns 文件夹。默认情况下,将读取最大的可用图标,但可以通过设置 size 调用前属性 load() . 这个 open() 方法设置以下内容 info 财产:
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的大小都将被忽略。
IM¶
IM是Labeye和其他基于ifunc图像处理库的应用程序使用的格式。库读取和写入此格式的大多数未压缩的交换版本。
IM是唯一可以存储所有内部Pillow格式的格式。
JPEG¶
Pillow 读取包含 L , RGB 或 CMYK 数据。它编写标准和渐进的JFIF文件。
使用 draft() 方法,您可以通过转换 RGB 图像到 L ,并在加载图像时将其大小调整为原始大小的1/2、1/4或1/8。
这个 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数据。
这个 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 to keep
0: equivalent to 4:4:4
1: equivalent to 4:2:2
2: equivalent to 4: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开始支持交错文件。
从 Pillow 6.0开始,可以从PNG图像读取exif数据。但是,与其他图像格式不同的是,exif数据不能保证存在于 info 直到 load() 已被调用。
这个 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 有关详细信息。
PPM¶
Pillow 读取和写入PBM、PGM、PPM和PNM文件,其中包含 1 , L 或 RGB 数据。
SGI¶
Pillow 读写未压缩 L , RGB 和 RGBA 文件夹。
SPIDER¶
Pillow读取和写入32位浮点数据的蜘蛛图像文件(“F;32F”)。
Pillow 还读取包含蜘蛛图像序列的蜘蛛堆栈文件。这个 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。
这个 open() 方法设置以下内容 info 性能:
compression压缩模式。
2.0.0 新版功能.
dpi图像分辨率 (xdpi, ydpi) tuple,如适用。你可以使用 tag 属性获取有关图像分辨率的详细信息。
1.1.5 新版功能.
resolution图像分辨率 (xres, yres) tuple,如适用。这是以文件指定的单位为单位的度量。
1.1.5 新版功能.
这个 tag_v2 属性包含TIFF元数据字典。关键是数字索引 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.num_frames - 1 ,可以按任意顺序访问。
im.seek() 提出一个 EOFError 如果你试图寻找最后一帧。
保存TIFF图像¶
这个 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编写时只支持一些标记。支持的列表位于 LIBTIFF_CORE .
6.1.0 新版功能.
增加了对签名类型的支持(例如 TIFF_SIGNED_LONG )以及多个值。单个标记的多个值必须为 ImageFileDirectory_v2 作为元组并需要匹配的类型 tagtype 标记类型。
compression包含文件所需压缩方法的字符串。(仅在安装libtiff时有效)有效的压缩方法为: None , "tiff_ccitt" , "group3" , "group4" , "tiff_jpeg" , "tiff_adobe_deflate" , "tiff_thunderscan" , "tiff_deflate" , "tiff_sgilog" , "tiff_sgilog24" , "tiff_raw_16"
qualityjpeg压缩的图像质量,从0(最差)到100(最好)。默认值为75。
6.1.0 新版功能.
设置TIFF头字段的这些参数是使用TiffInfo提供的常规标记的替代方法。
description
software
date_time
artist
copyright字符串
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=慢更好)。默认值为0。
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 )