Pillow Image模块功能

2021-07-13 15:31 更新
  • PIL.Image.open(fp, mode='r')​  打开并标识给定的图像文件。

这是一个懒惰的操作;此函数标识文件,但文件保持打开状态,并且在尝试处理数据(或调用 ​load() ​方法)。见 ​new()​ 。请参阅Pillow 中的文件处理

参数
  • fp – 文件名(字符串)、​pathlib.Path ​对象或文件对象。文件对象必须实现file.read、 file.seekfile.tell方法,并以二进制模式打开。

  • 模式- 模式。如果给出,这个参数必须是“r”。

  • 格式- 尝试加载文件的格式列表或元组。这可用于限制检查的格式集。通过None以尝试所有支持的格式。您可以通过运行​python3 -m PIL​或使用​PIL.features.pilinfo()​函数来打印可用格式集。

返回

一个Image对象。

引发
  • FileNotFoundError ​– 如果找不到文件。

  • PIL.UnidentifiedImageError​ – 如果无法打开和识别图像。

  • ValueError​ – 如果mode不是“r”,或者StringIO 实例用于fp.

  • TypeError ​– 如果formats不是None,则为列表或元组。

为了防止“解压炸弹”(即解压成大量数据的恶意文件,旨在通过使用大量内存而崩溃或造成中断)引起的潜在 DOS 攻击,如果像素数在图像中超过某个限制,Pillow 将发出一个​DecompressionBombWarning​ ,​PIL.Image.MAX_IMAGE_PIXELS​。
这个阈值可以通过设置​PIL.Image.MAX_IMAGE_PIXELS​来改变。也可以通过设置​ Image.MAX_IMAGE_PIXELS = None​禁用它。
如果需要,可以使用 将警告转换为带有​warnings.simplefilter('error', Image.DecompressionBombWarning)​的错误或使用 warnings.simplefilter('ignore', Image.DecompressionBombWarning)​​完全抑制 。另请参阅 日志记录文档以将警告输出到日志记录工具而不是使用 stderr。
如果像素数大于两倍​PIL.Image.MAX_IMAGE_PIXELS​,则 DecompressionBombError​将被提升。

图像处理

PIL.Image.alpha_composite(im1im2)

IM1上的Alpha复合IM2。

参数
  • im1 -- 第一张图片。必须具有模式RGBA。

  • im2 -- 第二张图片。必须具有模式RGBA,并且大小与第一个图像相同。

返回

一个 Image 对象。

PIL.Image.blend(im1im2alpha)

通过使用常量alpha在两个输入图像之间插入来创建新图像。:

out = image1 * (1.0 - alpha) + image2 * alpha
参数
  • im1 -- 第一张图片。

  • im2 -- 第二张图片。必须与第一个图像具有相同的模式和大小。

  • alpha -- 插值α因子。如果alpha为0.0,则返回第一个图像的副本。如果alpha为1.0,则返回第二个图像的副本。alpha值没有限制。如有必要,将结果裁剪到允许的输出范围内。

返回

一个Image 对象。

PIL.Image.composite(image1image2mask)

通过使用透明蒙版混合图像来创建合成图像。

参数
  • image1 -- 第一张图片。

  • image2 -- 第二张图片。必须与第一个图像具有相同的模式和大小。

  • mask -- 掩模图像。此图像可以具有模式“1”、“l”或“RGBA”,并且必须与其他两个图像具有相同的大小。

PIL.Image.eval(image*args)

对给定图像中的每个像素应用函数(应采用一个参数)。如果图像有多个波段,则对每个波段应用相同的功能。请注意,该函数对每个可能的像素值进行一次评估,因此不能使用随机组件或其他生成器。

参数
  • image -- 输入图像。

  • function -- 一个函数对象,采用一个整型参数。

返回

一个 Image 对象。

PIL.Image.merge(modebands)

将一组单波段图像合并为新的多波段图像。

参数
  • mode -- 用于输出图像的模式。见: 模式 。

  • bands -- 包含输出图像中每个波段一个单波段图像的序列。所有带区的大小必须相同。

返回

一个 Image 对象。

构建图像

PIL.Image.new(modesizecolor=0)

创建具有给定模式和大小的新图像。

参数
  • mode -- 用于新图像的模式。见: 模式 

  • size -- 以像素为单位包含(宽度、高度)的2元组。

  • color -- 图像要使用什么颜色。默认为黑色。如果给定,对于单波段模式,这应该是一个整数或浮点值,对于多波段模式,这应该是一个元组(每个波段一个值)。创建RGB图像时,还可以使用ImageColor模块支持的颜色字符串。如果颜色为“无”,则图像不会初始化。

返回

一个 Image 对象。

PIL.Image.fromarray(objmode=None)

从导出数组接口的对象(使用缓冲区协议)创建图像内存。

如果 obj 不是连续的,则调用​tobytes​方法并使用 frombuffer() 。

如果你有一张NumPy的图片:

from PIL import Image
import numpy as np
im = Image.open('hopper.jpg')
a = np.asarray(im)

然后可以将其转换为Pillow图像:

im = Image.fromarray(a)
参数
  • obj -- 带数组接口的对象

  • mode -- 要使用的模式(如果没有将由类型决定)见: 模式 。

返回

一个​Image​对象。

1.1.6 新版功能。

PIL.Image.frombytes(modesizedatadecoder_name='raw'*args)

从缓冲区中的像素数据创建图像内存的副本。

最简单的形式是,这个函数接受三个参数(模式、大小和未压缩的像素数据)。

您还可以使用PIL支持的任何像素解码器。有关可用解码器的详细信息,请参阅部分 编写你自己的文件解码器

请注意,此函数只解码像素数据,而不是整个图像。如果在字符串中包含整个图像,请将其包装为 BytesIO 对象中,然后使用open()来加载它。

参数
  • mode -- 图像模式。见:  模式 。

  • size -- 图像大小。

  • data -- 包含给定模式的原始数据的字节缓冲区。

  • decoder_name -- 使用什么解码器。

  • args -- 给定解码器的其他参数。

返回

一个 Image 对象。

PIL.Image.frombuffer(modesizedatadecoder_name='raw'*args)

在字节缓冲区中创建引用像素数据的图像内存。

此功能类似于 frombytes() ,但尽可能使用字节缓冲区中的数据。这意味着对原始缓冲区对象的更改将反映在此图像中)。并非所有模式都可以共享内存;支持的模式包括“l”、“rgbx”、“rgba”和“cmyk”。

请注意,此函数只解码像素数据,而不是整个图像。如果您有一个字符串中的整个图像文件, ​请将其包装在一个BytesIO 对象中,然后使用 open() 来加载它。

在当前版本中,用于“原始”解码器的默认参数与用于 frombytes() 。这是一个bug,可能会在将来的版本中修复。如果执行此操作,当前版本将发出警告;要禁用该警告,应提供完整的参数集。详情见下文。

参数
  • mode -- 图像模式。见: 模式 。

  • size -- 图像大小。

  • data -- 包含给定模式的原始数据的字节或其他缓冲区对象。

  • decoder_name -- 使用什么解码器。

  • args -- 给定解码器的其他参数。对于默认编码器(“raw”),建议您提供完整的参数集:

    frombuffer(mode, size, data, "raw", mode, 0, 1)
返回

一个Image 对象。

1.1.4 新版功能。

生成图像

PIL.Image.effect_mandelbrot(sizeextentquality)

生成覆盖给定范围的Mandelbrot集。

参数
  • size -- 以像素为单位的请求大小,作为2元组:(宽度、高度)。

  • extent -- 要覆盖的范围,作为4元组:(x0,y0,x1,y2)。

  • quality -- 质量。

PIL.Image.effect_noise(sizesigma)

生成以128为中心的高斯噪声。

参数
  • size -- 以像素为单位的请求大小,作为2元组:(宽度、高度)。

  • sigma -- 噪声标准差。

PIL.Image.linear_gradient(mode)

生成从黑到白、从上到下的 256x256 线性渐变。

参数

mode -- 输入模式。

PIL.Image.radial_gradient(mode)

生成从黑色到白色,中心到边缘的 256x256 径向渐变。

参数

mode -- 输入模式。

注册插件

这些函数供插件作者使用。应用程序作者可以忽略它们。

PIL.Image.register_open(idfactoryaccept=None)

注册图像文件插件。应用程序代码中不应使用此函数。

参数
  • id -- 图像格式标识符。

  • factory -- 图像文件工厂方法。

  • accept -- 一种可选功能,可用于快速拒绝具有其他格式的图像。

PIL.Image.register_mime(idmimetype)

注册图像MINE类型。应用程序代码中不应使用此函数。

参数
  • id -- 图像格式标识符。

  • mimetype -- 此格式的图像mime类型。

PIL.Image.register_save(iddriver)

注册图像保存功能。应用程序代码中不应使用此函数。

参数
  • id -- 图像格式标识符。

  • driver -- 以这种格式保存图像的函数。

PIL.Image.register_save_all(iddriver)

注册一个图像函数来保存多帧格式的所有帧。应用程序代码中不应使用此函数。

参数
  • id -- 图像格式标识符。

  • driver -- 以这种格式保存图像的函数。

PIL.Image.register_extension(idextension)

注册图像扩展名。应用程序代码中不应使用此函数。

参数
  • id -- 图像格式标识符。

  • extension -- 用于此格式的扩展名。

PIL.Image.register_extensions(idextensions)

注册映像扩展名。应用程序代码中不应使用此函数。

参数
  • id -- 图像格式标识符。

  • extensions -- 用于此格式的扩展名列表。

PIL.Image.registered_extensions()

返回包含所有属于已注册插件的文件扩展名的字典

PIL.Image.register_decoder(namedecoder)

注册图像解码器。应用程序代码中不应使用此函数。

参数
  • name -- 解码器的名称

  • decoder -- 返回​imagefile.pydecoder​对象的可调用(模式,参数)

4.1.0 新版功能。

PIL.Image.register_encoder(nameencoder)

注册图像编码器。应用程序代码中不应使用此函数。

参数
  • name -- 编码器的名称

  • encoder -- 返回​imagefile.pyencoder​对象的可调用(模式,参数)

4.1.0 新版功能。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号