图像文件格式

python图像库支持各种各样的栅格文件格式。库可以识别和读取30多种不同的文件格式。写支持不那么广泛,但支持最常见的交换和表示格式。

这个 open() 函数从文件的内容中标识文件,而不是文件名,而是 save() 方法检查名称以确定要使用的格式,除非显式给定了该格式。

完全支持的格式

BMP

Pillow 读取和写入Windows和OS/2 BMP文件,其中包含 1LPRGB 数据。16幅彩色图像读作 P 图像。不支持运行长度编码。

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

compression

设置为 bmp_rle 如果文件是运行长度编码的。

DIB

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

6.0.0 新版功能.

EPS

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

如果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

版本(或 GIF87aGIF89a

duration

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

loop

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

comment

可能不存在。关于图像的评论。

extension

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

读取序列

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

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

储蓄

调用时 save() ,以下选项可用:

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文件大小相同的图像内存 逻辑屏幕大小, 并粘贴实际像素数据 局部图像) 在这张图片中。如果只需要实际的像素矩形,可以操作 sizetile 加载文件前的属性:

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 读取包含 LRGBCMYK 数据。它编写标准和渐进的JFIF文件。

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

这个 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数据。

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

quality

图像质量,从1(最差)到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:44:2:24: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 可以是以下几种值之一:

  • 用于命名预设的字符串,例如 keepweb_lowweb_high

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

2.5.0 新版功能.

注解

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

JPEG 2000

2.4.0 新版功能.

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

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

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

offset

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

tile_offset

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

tile_size

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

quality_mode

根据要用于指定图像质量的单位,“速率”或“db”。

quality_layers

一个数字序列,每个数字代表一个近似的大小减小(如果质量模式是“速率”)或一个以分贝为单位的信噪比值。如果未指定,则默认为完整质量的单层。

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 读取和写入包含 1LPRGB 数据。

PNG

Pillow 识别、读取和写入包含 1LLAIPRGBRGBA 数据。从v1.1.7开始支持交错文件。

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

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

chromaticity

色度点,作为浮点数的8元组。( White Point XWhite Point YRed XRed YGreen XGreen YBlue XBlue Y

gamma

gamma,作为浮点数给出。

srgb

sRGB呈现意图为整数。

  • 0感性

  • 1相对比色法

  • 2饱和度

  • 3绝对比色法

transparency

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

为了 1LIRGB 图像,表示此图像中完全透明像素的颜色。

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

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

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

optimize

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

transparency

为了 P1LIRGB 图像,此选项控制图像中要标记为透明的颜色。

为了 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 有关详细信息。

PPM

Pillow 读取和写入PBM、PGM、PPM和PNM文件,其中包含 1LRGB 数据。

SGI

Pillow 读写未压缩 LRGBRGBA 文件夹。

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 homepageWadsworth Center .

TGA

Pillow 读写包含 LLAPRGBRGBA 数据。 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

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

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编写时只支持一些标记。支持的列表位于 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"

quality

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

6.1.0 新版功能.

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

description

software

date_time

artist

copyright

字符串

resolution_unit

“英寸”、“厘米”或“厘米”的串

resolution

x_resolution

y_resolution

dpi

一个浮点、两个元组(分子、分母)或 IFDRational . 分辨率意味着X和Y分辨率相等,dpi也意味着英寸单位。

韦伯

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”)来检查webp动画支持。

调用时 save() ,当 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解码器可以读取包含 1LPRGB 数据。

打开文件时,只读取第一个图像。你可以使用 seek()ImageSequence 阅读其他图像。

DDS

DDS是一种流行的容器纹理格式,在视频游戏中使用,并由DirectX本地支持。目前,只支持未压缩的RGB数据和dxt1、dxt3和dxt5像素格式,而且 RGBA 模式。

3.4.0 新版功能: DXT3

FLC

Pillow阅读欧特克FLI和FLC动画。

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

duration

每帧之间的延迟(毫秒)。

FPX

Pillow读柯达Flashpix文件。在当前版本中,只从文件中读取最高分辨率的图像,而不考虑查看转换。

注解

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

FTEX

3.2.0 新版功能.

ftex解码器读取独立战争2:混乱边缘中用于3D对象的纹理。该插件以压缩和未压缩格式读取每个文件的单个纹理。

GBR

GBR解码器读取gimp brush文件,版本1和2。

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

comment

画笔名称。

spacing

画笔之间的间距,以像素为单位。只有2版。

GD

Pillow 读取未压缩的gd2文件。请注意,您必须使用 PIL.GdImageFile.open() 读取这样的文件。

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

transparency

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

IMT

Pillow 读取图像工具图像包含 L 数据。

IPTC/NAA

Pillow为IPTC/NAA新闻照片文件提供有限的读取支持。

MCIDAS

Pillow识别和读取8位MCIDAS区域文件。

MIC

Pillow 识别并读取Microsoft Image Composer(麦克风)文件。打开时,将加载文件中的第一个sprite。你可以使用 seek()tell() 从文件中读取其他精灵。

请注意,MIC文件中可能有2.2的嵌入gamma。

MPO

Pillow 识别和读取多图像对象(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方法。

XPM

Pillow 读取x pixmap文件(模式 P )256色或更少。

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

transparency

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

只写格式

PALM

Pillow为Palm PixMap文件提供只写支持。

格式代码为 Palm ,扩展名为 .palm .

PDF

Pillow可以写PDF(Acrobat)图像。这些图像以二进制PDF 1.4文件的形式写入,根据图像模式使用jpeg或hex编码(以及是否支持jpeg)。

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

save_all

如果使用多帧图像,默认情况下,只保存第一个图像。要将所有帧、每个帧保存到PDF的单独页面,请 save_all 参数必须存在并设置为 True .

3.0.0 新版功能.

append_images

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

4.2.0 新版功能.

append

设置为true可将页面附加到现有的PDF文件。如果文件不存在,则 IOError 将被提升。

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文件。

WMF

Pillow可以识别可播放的WMF文件。

在PIL 1.1.4和更早版本中,WMF驱动程序提供了一些有限的渲染支持,但不足以用于任何实际应用程序。

在PIL 1.1.5及更高版本中,WMF驱动程序是存根驱动程序。要向应用程序添加WMF读或写支持,请使用 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")