概念#

python图像库处理 栅格图像; 也就是说,像素数据的矩形。

波段#

图像可以由一个或多个数据带组成。python图像库允许您在一个图像中存储多个波段,前提是它们都具有相同的尺寸和深度。例如,PNG图像的红色、绿色、蓝色和阿尔法透明度值可能有“r”、“g”、“b”和“a”波段。许多操作分别作用于每个波段,例如柱状图。把每个像素想象成每个波段有一个值通常是有用的。

要获取图像中带区的编号和名称,请使用 getbands() 方法。

模式#

这个 mode 是定义图像中像素的类型和深度的字符串。每个像素使用位深度的整个范围。因此,1位像素的范围为0-1,8位像素的范围为0-255,32位带符号整数像素的范围为INT32,32位浮点像素的范围为FLOAT32。当前版本支持以下标准模式:

  • 1 (1位黑白像素,每字节存储一个像素)

  • L (8位像素,灰度)

  • P (8位像素,使用调色板映射到任何其他模式)

  • RGB (3x8位像素,真彩色)

  • RGBA (4x8位像素,带透明蒙版的真彩色)

  • CMYK (4x8位像素,分色)

  • YCbCr (3x8位像素,彩色视频格式)

    • 请注意,这是指jpeg,而不是ITU-R BT.2020标准。

  • LAB (3x8位像素,L*A*B颜色空间)

  • HSV (3x8位像素、色调、饱和度、值颜色空间)

    • 色调的范围0-255是0度<=色调<360度的缩放版本

  • I (32位有符号整数像素)

  • F (32位浮点像素)

Pillow还为其他几种模式提供有限的支持,包括:

  • LA (L和阿尔法)

  • PA (P与阿尔法)

  • RGBX (带填充的真彩色)

  • RGBa (带预乘alpha的真彩色)

  • La (L带预乘α)

  • I;16 (16位无符号整数像素)

  • I;16L (16位小端无符号整数像素)

  • I;16B (16位大端无符号整数像素)

  • I;16N (16位本机端无符号整数像素)

  • BGR;15 (15位反转真彩色)

  • BGR;16 (16位反转真彩色)

  • BGR;24 (24位反转真彩色)

预乘Alpha是每个其他通道的值乘以Alpha的位置。例如,的RGBA像素 (10, 20, 30, 127) 将转换为RGBA像素 (5, 10, 15, 127) 。由于Alpha通道中的半透明,R、G和B通道的值减半。

除了这些额外的模式外,Pillow还不支持每通道深度超过8位的多通道图像。

Pillow也不支持用户定义的模式;如果您需要处理上面未列出的频带组合,请使用图像对象序列。

您可以通过 mode 属性。这是一个包含上述值之一的字符串。

尺寸#

您可以通过 size 属性。这是一个2元组,包含以像素为单位的水平和垂直大小。

坐标系#

python图像库使用笛卡尔像素坐标系,左上角有(0,0)。请注意,坐标指的是隐含的像素角;定位为(0,0)的像素的中心实际上位于(0.5,0.5)。

坐标通常以2元组(x,y)的形式传递到库中。矩形表示为四元组(x1,y1,x2,y2),左上角首先给出。

调色板#

调色板模式( P )使用调色板定义每个像素的实际颜色。

信息#

您可以使用 info 属性。这是字典对象。

加载和保存图像文件时如何处理这些信息取决于文件格式处理程序(请参见 图像文件格式 )大多数处理程序将属性添加到 info 属性,但在保存图像时忽略它。

透明度#

如果图像没有Alpha带,则可以在 info 属性,并使用“透明”键。

大多数情况下,“透明”值是一个单一的整数,描述在“1”、“L”、“I”或“P”模式图像中哪个像素值是透明的。但是,PNG图像可以有三个值,每个值对应于“RGB”模式图像中的每个通道,或者可以具有用于“P”模式图像的字节字符串,以指定每个调色板条目的Alpha值。

方向#

一个共同的元素 info JPG和TIFF图像的属性是EXIF方向标记。这是关于图像数据应该如何定向的说明。例如,它可以指示图像旋转90度或镜像。要将此信息应用于图像, exif_transpose() 可以使用。

过滤器#

对于可能将多个输入像素映射到单个输出像素的几何操作,python图像库提供了不同的重采样。 过滤器.

Resampling.NEAREST#

从输入图像中选取一个最近的像素。忽略所有其他输入像素。

Resampling.BOX#

源图像的每个像素以相同的权重贡献目标图像的一个像素。对于升级来说,相当于 Resampling.NEAREST 。此筛选器只能与 resize()thumbnail() 方法:研究方法。

在 3.4.0 版本加入.

Resampling.BILINEAR#

要调整大小,请使用可能有助于输出值的所有像素上的线性插值计算输出像素值。对于其他转换,使用输入图像中2x2环境上的线性插值。

Resampling.HAMMING#

产生的图像比 Resampling.BILINEAR ,没有局部层面的错位,就像 Resampling.BOX 。此筛选器只能与 resize()thumbnail() 方法:研究方法。

在 3.4.0 版本加入.

Resampling.BICUBIC#

要调整大小,请使用可能有助于输出值的所有像素上的三次插值来计算输出像素值。对于其他转换,使用输入图像中4x4环境上的三次插值。

Resampling.LANCZOS#

对所有可能有助于输出值的像素使用高质量Lanczos过滤器(截断的sinc)计算输出像素值。此筛选器只能与 resize()thumbnail() 方法。

在 1.1.3 版本加入.

筛选比较表#

滤波器

缩小尺寸质量

升级质量

性能

Resampling.NEAREST

第二章

Resampling.BOX

γ

阿尔法

Resampling.BILINEAR

γ

γ

阿尔法

Resampling.HAMMING

γ

阿尔法

Resampling.BICUBIC

阿尔法

阿尔法

γ

Resampling.LANCZOS

阿尔法

阿尔法

γ