概念

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

乐队

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

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

模式

这个 mode 定义图像中像素的类型和深度。每个像素使用位深度的全范围。所以1位像素的范围是0-1,8位像素的范围是0-255等等。当前版本支持以下标准模式:

  • 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位像素、色调、饱和度、值颜色空间)

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

  • F (32位浮点像素)

PIL还为一些特殊模式提供有限的支持,包括 LA (L与α), RGBX (带填充的真彩色)和 RGBa (真彩色加上预乘alpha)。但是,PIL不支持用户定义的模式;如果需要处理上面未列出的波段组合,请使用图像对象序列。

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

尺寸

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

坐标系

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

坐标通常作为2元组(x,y)传递给库。矩形表示为4个元组,首先给出左上角。例如,覆盖800x600像素图像的矩形写为(0,0,800,600)。

调色板

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

信息

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

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

过滤器

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

NEAREST

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

BOX

源图像的每个像素贡献给具有相同权重的目标图像的一个像素。因为上标相当于 NEAREST . 此筛选器只能与 resize()thumbnail() 方法。

3.4.0 新版功能.

BILINEAR

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

HAMMING

生成的图像比 BILINEAR 在地方层面上没有错位 BOX . 此筛选器只能与 resize()thumbnail() 方法。

3.4.0 新版功能.

BICUBIC

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

LANCZOS

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

1.1.3 新版功能.

筛选比较表

滤波器

缩小尺寸质量

升级质量

性能

NEAREST

第二章

BOX

γ

阿尔法

BILINEAR

γ

γ

阿尔法

HAMMING

γ

阿尔法

BICUBIC

阿尔法

阿尔法

γ

LANCZOS

阿尔法

阿尔法

γ