这个 Image
模块提供了一个同名的类,用于表示PIL图像。该模块还提供许多工厂功能,包括从文件加载图像和创建新图像的功能。
下面的脚本加载图像,将其旋转45度,并使用外部查看器(通常是UNIX上的xv,以及Windows上的paint程序)显示它。
from PIL import Image
im = Image.open("bride.jpg")
im.rotate(45).show()
下面的脚本创建当前目录中所有JPEG图像的漂亮缩略图,保留最大分辨率为128x128的纵横比。
from PIL import Image
import glob, os
size = 128, 128
for infile in glob.glob("*.jpg"):
file, ext = os.path.splitext(infile)
im = Image.open(infile)
im.thumbnail(size)
im.save(file + ".thumbnail", "JPEG")
PIL.Image.
open
(fp, mode='r')[源代码]¶打开并标识给定的图像文件。
这是一个懒惰的操作;此函数标识文件,但文件保持打开状态,并且在尝试处理数据(或调用 load()
方法)。见 new()
. 见 Pillow中的文件处理 .
参数: |
|
---|---|
返回: | 安 |
引发: | IOError -- 如果找不到文件,或者无法打开和标识图像。 |
警告
以防止由“引起的潜在DoS攻击” decompression bombs “(即恶意文件,将其解压缩为大量数据,并设计为通过耗尽大量内存而崩溃或造成中断),枕头将发出一个 DecompressionBombWarning 如果图像超过某个限制。如果需要,可以将警告转换为错误 warnings.simplefilter('error', Image.DecompressionBombWarning)
或者完全被压制 warnings.simplefilter('ignore', Image.DecompressionBombWarning)
. 也见 the logging documentation 将警告输出到日志工具而不是stderr。
PIL.Image.
alpha_composite
(im1, im2)[源代码]¶IM1上的α复合IM2。
参数: |
|
---|---|
返回: | 安 |
PIL.Image.
blend
(im1, im2, alpha)[源代码]¶通过使用常量alpha在两个输入图像之间插入来创建新图像。::
out = image1 * (1.0 - alpha) + image2 * alpha
参数: |
|
---|---|
返回: | 安 |
PIL.Image.
composite
(image1, image2, mask)[源代码]¶通过使用透明蒙版混合图像来创建合成图像。
参数: |
|
---|
PIL.Image.
new
(mode, size, color=0)[源代码]¶创建具有给定模式和大小的新图像。
参数: |
|
---|---|
返回: | 安 |
PIL.Image.
fromarray
(obj, mode=None)[源代码]¶从导出数组接口的对象(使用缓冲区协议)创建图像内存。
如果 obj 不是连续的,则调用tobytes方法并 frombuffer()
使用。
如果你有一张麻木的图片:
from PIL import Image
import numpy as np
im = Image.open('hopper.jpg')
a = np.asarray(im)
然后可以将其转换为Pillow图像:
im = Image.fromarray(a)
参数: |
|
---|---|
返回: | 图像对象。 |
1.1.6 新版功能.
PIL.Image.
frombytes
(mode, size, data, decoder_name='raw', *args)[源代码]¶从缓冲区中的像素数据创建图像内存的副本。
最简单的形式是,这个函数接受三个参数(模式、大小和未压缩的像素数据)。
您还可以使用PIL支持的任何像素解码器。有关可用解码器的详细信息,请参阅部分 Writing Your Own File Decoder .
请注意,此函数只解码像素数据,而不是整个图像。如果在字符串中包含整个图像,请将其包装为 BytesIO
对象与使用 open()
加载它。
参数: |
|
---|---|
返回: | 安 |
PIL.Image.
frombuffer
(mode, size, data, decoder_name='raw', *args)[源代码]¶在字节缓冲区中创建引用像素数据的图像内存。
此功能类似于 frombytes()
,但尽可能使用字节缓冲区中的数据。这意味着对原始缓冲区对象的更改将反映在此图像中)。并非所有模式都可以共享内存;支持的模式包括“l”、“rgbx”、“rgba”和“cmyk”。
请注意,此函数只解码像素数据,而不是整个图像。如果您有一个字符串中的整个图像文件,请用 BytesIO 对象与使用 open()
加载它。
在当前版本中,用于“原始”解码器的默认参数与用于 frombytes()
. 这是一个bug,可能会在将来的版本中修复。如果执行此操作,当前版本将发出警告;要禁用该警告,应提供完整的参数集。详情见下文。
参数: |
|
---|---|
返回: | 安 |
1.1.4 新版功能.
注解
这些函数供插件作者使用。应用程序作者可以忽略它们。
PIL.Image.
register_open
(id, factory, accept=None)[源代码]¶注册图像文件插件。应用程序代码中不应使用此函数。
参数: |
|
---|
PIL.Image.
register_decoder
(name, decoder)[源代码]¶注册图像解码器。应用程序代码中不应使用此函数。
参数: |
|
---|
4.1.0 新版功能.
PIL.Image.
register_mime
(id, mimetype)[源代码]¶注册图像mime类型。应用程序代码中不应使用此函数。
参数: |
|
---|
PIL.Image.
register_save
(id, driver)[源代码]¶注册图像保存功能。应用程序代码中不应使用此函数。
参数: |
|
---|
的实例 Image
类具有以下方法。除非另有说明,否则所有方法都返回 Image
类,保存生成的图像。
Image.
alpha_composite
(im, dest=(0, 0), source=(0, 0))[源代码]¶image.alpha_复合的“就地”模拟。将图像合成到该图像上。
参数: |
|
---|
性能说明:目前没有在核心层中就地实现。
Image.
convert
(mode=None, matrix=None, dither=None, palette=0, colors=256)[源代码]¶返回此图像的转换副本。对于“P”模式,此方法通过调色板转换像素。如果省略了模式,则会选择一个模式,以便可以在不使用调色板的情况下表示图像和调色板中的所有信息。
当前版本支持“l”、“rgb”和“cmyk”之间的所有可能转换。 matrix 参数只支持“L”和“RGB”。
将彩色图像转换为灰度(模式“L”)时,库使用ITU-R 601-2 Luma转换:
L = R * 299/1000 + G * 587/1000 + B * 114/1000
将灰度(“L”)或“RGB”图像转换为双层(模式“1”)图像的默认方法是使用Floyd Steinberg抖动来近似原始图像的亮度级别。如果“抖动”为“无”,则所有大于128的值都设置为255(白色),所有其他值都设置为0(黑色)。要使用其他阈值,请使用 point()
方法。
当从“rgba”转换为“p”时,不使用 matrix 参数,这将操作传递给 quantize()
和 dither 和 palette 被忽略。
参数: |
|
---|---|
返回类型: | |
返回: | 安 |
以下示例将RGB图像(根据ITU-R 709线性校准,使用D65亮度)转换为CIE XYZ颜色空间:
rgb2xyz = (
0.412453, 0.357580, 0.180423, 0,
0.212671, 0.715160, 0.072169, 0,
0.019334, 0.119193, 0.950227, 0 )
out = im.convert("RGB", rgb2xyz)
Image.
crop
(box=None)[源代码]¶返回此图像中的矩形区域。框是定义左、上、右和下像素坐标的四元组。见 坐标系 .
注意:在Pillow3.4.0之前,这是一个懒惰的操作。
参数: | box -- 裁剪矩形,作为(左、上、右、下)元组。 |
---|---|
返回类型: | Image |
返回: | 安 Image 对象。 |
Image.
draft
(mode, size)[源代码]¶配置图像文件加载器,使其返回尽可能接近给定模式和大小的图像版本。例如,可以使用此方法在加载彩色jpeg时将其转换为灰度,或者从PCD文件中提取128x192版本。
请注意,此方法修改了 Image
对象就位。如果图像已经加载,则此方法无效。
注意:此方法不适用于大多数图像。它目前仅用于jpeg和pcd图像。
参数: |
|
---|
Image.
filter
(filter)[源代码]¶使用给定的筛选器筛选此图像。有关可用筛选器的列表,请参阅 ImageFilter
模块。
参数: | filter -- 过滤内核。 |
---|---|
返回: | 安 Image 对象。 |
Image.
getbands
()[源代码]¶返回一个包含此图像中每个带区的名称的元组。例如, getbands 在RGB图像上返回(“R”、“G”、“B”)。
返回: | 包含带区名称的元组。 |
---|---|
返回类型: | tuple |
Image.
getcolors
(maxcolors=256)[源代码]¶返回此图像中使用的颜色列表。
参数: | maxcolors -- 最大颜色数。如果超过此数字,此方法将不返回任何值。默认限制为256色。 |
---|---|
返回: | (计数、像素)值的未排序列表。 |
Image.
getdata
(band=None)[源代码]¶将此图像的内容作为包含像素值的序列对象返回。序列对象被展平,因此行1的值直接位于行0的值之后,依此类推。
注意,这个方法返回的sequence对象是一个内部PIL数据类型,它只支持特定的sequence操作。要将其转换为普通序列(例如用于打印),请使用**list(im.getdata())**。
参数: | band -- 返回哪个乐队。默认值是返回所有带区。要返回单个波段,请传递索引值(例如0,从“rgb”图像中获取“r”波段)。 |
---|---|
返回: | 类似序列的物体。 |
Image.
histogram
(mask=None, extrema=None)[源代码]¶返回图像的直方图。柱状图以像素计数列表的形式返回,每个像素值对应一个源图像。如果图像有多个波段,则所有波段的柱状图都会连接起来(例如,“RGB”图像的柱状图包含768个值)。
该方法将二级图像(模式“1”)作为灰度(“L”)图像处理。
如果提供了遮罩,该方法将返回图像中遮罩图像非零部分的直方图。遮罩图像必须与图像具有相同的大小,并且是双层图像(模式“1”)或灰度图像(“L”)。
参数: | mask -- 一个可选的面具。 |
---|---|
返回: | 包含像素计数的列表。 |
Image.
paste
(im, box=None, mask=None)[源代码]¶将另一个图像粘贴到此图像中。box参数要么是给出左上角的2元组,要么是定义左、上、右和下像素坐标的4元组,要么是无(与(0,0)相同)。见 坐标系 . 如果给定4元组,则粘贴图像的大小必须与区域的大小匹配。
如果模式不匹配,则粘贴的图像将转换为此图像的模式(请参见 convert()
详细方法)。
源可以是包含像素值的整数或元组,而不是图像。然后,该方法用给定的颜色填充该区域。创建RGB图像时,还可以使用ImageColor模块支持的颜色字符串。
如果给定了遮罩,则此方法仅更新遮罩指示的区域。您可以使用“1”、“l”或“rgba”图像(在后一种情况下,alpha带用作遮罩)。如果遮罩为255,则按原样复制给定图像。如果遮罩为0,则保留当前值。中间值将两个图像混合在一起,包括它们的alpha通道(如果有的话)。
见 alpha_composite()
如果你想结合图像的阿尔法通道。
参数: |
|
---|
Image.
point
(lut, mode=None)[源代码]¶通过查找表或函数映射此图像。
参数: |
|
---|---|
返回: | 安 |
Image.
putalpha
(alpha)[源代码]¶添加或替换此图像中的alpha层。如果图像没有alpha层,它将转换为“la”或“rgba”。新层必须是“l”或“1”。
参数: | alpha -- 新的alpha层。这可以是与此图像大小相同的“l”或“1”图像,也可以是整数或其他颜色值。 |
---|
Image.
putdata
(data, scale=1.0, offset=0.0)[源代码]¶将像素数据复制到此图像。此方法将数据从序列对象复制到图像中,从左上角(0,0)开始,一直复制到图像或序列结束。比例和偏移值用于调整序列值: 像素=值*比例+偏移.
参数: |
|
---|
Image.
putpalette
(data, rawmode='RGB')[源代码]¶将调色板附加到此图像。图像必须是“P”或“L”图像,调色板序列必须包含768个整数值,其中每组三个值表示对应像素索引的红色、绿色和蓝色值。您可以使用8位字符串代替整数序列。
参数: |
|
---|
Image.
putpixel
(xy, value)[源代码]¶修改给定位置的像素。对于单波段图像,颜色以单个数值表示,对于多波段图像,颜色以元组表示。除此之外,p图像还接受rgb和rgba元组。
请注意,此方法相对较慢。要进行更广泛的更改,请使用 paste()
或 ImageDraw
模块代替。
参见:
参数: |
|
---|
Image.
quantize
(colors=256, method=None, kmeans=0, palette=None)[源代码]¶使用指定的颜色数将图像转换为“p”模式。
参数: |
|
---|---|
返回: | 新形象 |
Image.
resize
(size, resample=0, box=None)[源代码]¶返回此图像的已调整大小的副本。
参数: |
|
---|---|
返回: | 安 |
Image.
remap_palette
(dest_map, source_palette=None)[源代码]¶重写图像以重新排序调色板。
参数: |
|
---|---|
返回: | 安 |
Image.
rotate
(angle, resample=0, expand=0, center=None, translate=None, fillcolor=None)[源代码]¶返回此图像的旋转副本。此方法返回此图像的副本,围绕其中心逆时针旋转给定的度数。
参数: |
|
---|---|
返回: | 安 |
Image.
save
(fp, format=None, **params)[源代码]¶在给定文件名下保存此图像。如果未指定格式,则可以从文件扩展名确定要使用的格式(如果可能)。
关键字选项可用于向编写器提供附加说明。如果一个作家不认识一个选项,它就会被默默地忽略。可用选项在 image format documentation 对于每个作家。
可以使用文件对象而不是文件名。在这种情况下,必须始终指定格式。文件对象必须实现 seek
, tell
和 write
方法,并以二进制模式打开。
参数: |
|
---|---|
返回: | 没有 |
引发: |
|
Image.
seek
(frame)[源代码]¶查找此序列文件中的给定帧。如果在序列结尾之外查找,该方法将引发 EOFError 例外。打开序列文件时,库自动查找第0帧。
请注意,在库的当前版本中,大多数序列格式只允许您查找下一帧。
见 tell()
.
参数: | frame -- 帧编号,从0开始。 |
---|---|
引发: | EOFError -- 如果调用试图在序列结束后查找。 |
Image.
show
(title=None, command=None)[源代码]¶显示此图像。此方法主要用于调试目的。
在UNIX平台上,此方法将图像保存到临时PPM文件中,并调用 xv 效用或 display 实用程序,取决于可以找到哪一个。
在MacOS上,此方法将图像保存到临时的BMP文件中,并使用本机预览应用程序打开它。
在Windows上,它将图像保存到一个临时的BMP文件中,并使用标准的BMP显示实用程序来显示它(通常是绘制)。
参数: |
|
---|
Image.
split
()[源代码]¶将此图像拆分为单独的带区。此方法从图像返回单个图像带的元组。例如,分割一个“RGB”图像将创建三个新图像,每个新图像包含一个原始带区(红色、绿色、蓝色)的副本。
如果你只需要一个乐队, getchannel()
方法更方便快捷。
返回: | 包含条带的元组。 |
---|
Image.
getchannel
(channel)[源代码]¶返回包含源图像的单个通道的图像。
参数: | channel -- 返回哪个通道。可以是索引(“rgb”的“r”通道为0)或通道名称(“rgb a”的alpha通道为a”)。 |
---|---|
返回: | 处于“L”模式的图像。 |
4.3.0 新版功能.
Image.
thumbnail
(size, resample=3)[源代码]¶将此图像制作成缩略图。此方法修改图像以包含不大于给定大小的自身缩略图版本。此方法计算适当的缩略图大小以保留图像的方面,调用 draft()
方法来配置文件读取器(如果适用),并最终调整图像的大小。
请注意,此函数修改 Image
对象就位。如果还需要使用全分辨率图像,请将此方法应用于 copy()
原始图像的。
参数: |
|
---|---|
返回: | 没有 |
Image.
tobitmap
(name='image')[源代码]¶返回转换为x11位图的图像。
注解
此方法仅适用于模式“1”图像。
参数: | name -- 用于位图变量的名称前缀。 |
---|---|
返回: | 包含x11位图的字符串。 |
引发: | ValueError -- 如果模式不是“1” |
Image.
tobytes
(encoder_name='raw', *args)[源代码]¶以字节对象的形式返回图像。
警告
此方法从内部存储器返回原始图像数据。对于压缩图像数据(如PNG、JPEG),请使用 save()
,内存中的数据带有一个bytesio参数。
参数: |
|
---|---|
返回类型: | A bytes object. |
Image.
transform
(size, method, data=None, resample=0, fill=1, fillcolor=None)[源代码]¶转换此图像。此方法创建具有给定大小和与原始图像相同模式的新图像,并使用给定的转换将数据复制到新图像。
参数: |
|
---|---|
返回: | 安 |
Image.
transpose
(method)[源代码]¶转置图像(以90度的步幅翻转或旋转)
参数: | method -- 什么之中的一个 PIL.Image.FLIP_LEFT_RIGHT , PIL.Image.FLIP_TOP_BOTTOM , PIL.Image.ROTATE_90 , PIL.Image.ROTATE_180 , PIL.Image.ROTATE_270 , PIL.Image.TRANSPOSE 或 PIL.Image.TRANSVERSE . |
---|---|
返回: | 返回此图像的翻转或旋转副本。 |
Image.
verify
()[源代码]¶验证文件的内容。对于从文件读取的数据,此方法尝试确定文件是否已损坏,而不实际解码图像数据。如果此方法发现任何问题,则会引发适当的异常。如果使用此方法后需要加载图像,则必须重新打开图像文件。
Image.
load
()[源代码]¶为图像分配存储空间并加载像素数据。在正常情况下,不需要调用此方法,因为当首次访问打开的图像时,Image类会自动加载该图像。
如果与图像相关联的文件是通过枕头打开的,那么此方法将关闭它。例外情况是如果图像有多个帧,在这种情况下,文件将保持打开状态以进行查找操作。见 Pillow中的文件处理 更多信息。
返回: | 图像访问对象。 |
---|---|
返回类型: | PixelAccess 等级 or PIL.PyAccess |
Image.
close
()[源代码]¶如果可能,关闭文件指针。
此操作将破坏图像核心并释放其内存。之后图像数据将无法使用。
此函数仅用于关闭未被 load()
方法。见 Pillow中的文件处理 更多信息。
的实例 Image
类具有以下属性:
PIL.Image.
filename
¶源文件的文件名或路径。仅使用工厂功能创建的图像 open 具有文件名属性。如果输入是类似文件的对象,则将文件名属性设置为空字符串。
类型: | :py:class:string |
---|
PIL.Image.
format
¶源文件的文件格式。对于库本身创建的图像(通过工厂函数或通过对现有图像运行方法),此属性设置为 None
.
类型: | string or None |
---|
PIL.Image.
size
¶图像大小(像素)。大小以2元组(宽度、高度)表示。
类型: | (width, height) |
---|
PIL.Image.
palette
¶调色板表(如有)。如果模式为“P”,则这应该是 ImagePalette
班级。否则,应将其设置为 None
.
类型: | ImagePalette or None |
---|
PIL.Image.
info
¶保存与图象有关的数据的字典。文件处理程序使用此字典传递从文件中读取的各种非图像信息。有关详细信息,请参阅各种文件处理程序的文档。
大多数方法在返回新图像时忽略字典;由于键没有标准化,因此方法不可能知道操作是否影响字典。如果以后需要这些信息,请保留对从open方法返回的信息字典的引用。
除非另有说明,否则本词典不影响保存文件。
类型: | dict |
---|