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位浮点像素)
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位反转真彩色)
BGR;32
(32位反转真彩色)
但是,枕头不支持用户定义的模式;如果需要处理上面未列出的波段组合,请使用图像对象序列。
您可以通过 mode
属性。这是一个包含上述值之一的字符串。
尺寸
您可以通过 size
属性。这是一个2元组,包含以像素为单位的水平和垂直大小。
坐标系
python图像库使用笛卡尔像素坐标系,左上角有(0,0)。请注意,坐标指的是隐含的像素角;定位为(0,0)的像素的中心实际上位于(0.5,0.5)。
坐标通常作为2元组(x,y)传递给库。矩形表示为4个元组,首先给出左上角。例如,覆盖800x600像素图像的矩形写为(0,0,800,600)。
调色板
调色板模式( P
)使用调色板定义每个像素的实际颜色。
信息
您可以使用 info
属性。这是字典对象。
加载和保存图像文件时如何处理这些信息取决于文件格式处理程序(请参见 图像文件格式 )大多数处理程序将属性添加到 info
属性,但在保存图像时忽略它。
方向
一个共同的元素 info
JPG和TIFF图像的属性是EXIF方向标记。这是关于图像数据应该如何定向的说明。例如,它可以指示图像旋转90度或镜像。要将此信息应用于图像, exif_transpose()
可以使用。
过滤器
对于可能将多个输入像素映射到单个输出像素的几何操作,python图像库提供了不同的重采样。 过滤器.
- PIL.Image.BOX
-
源图像的每个像素贡献给具有相同权重的目标图像的一个像素。因为上标相当于
NEAREST
. 此筛选器只能与resize()
和thumbnail()
方法。3.4.0 新版功能.
- PIL.Image.HAMMING
-
生成的图像比
BILINEAR
在地方层面上没有错位BOX
. 此筛选器只能与resize()
和thumbnail()
方法。3.4.0 新版功能.
- PIL.Image.LANCZOS
-
对所有可能有助于输出值的像素使用高质量Lanczos过滤器(截断的sinc)计算输出像素值。此筛选器只能与
resize()
和thumbnail()
方法。1.1.3 新版功能.
筛选比较表
滤波器 |
缩小尺寸质量 |
升级质量 |
性能 |
---|---|---|---|
第二章 |
|||
γ |
阿尔法 |
||
γ |
γ |
阿尔法 |
|
γ |
阿尔法 |
||
阿尔法 |
阿尔法 |
γ |
|
阿尔法 |
阿尔法 |
γ |
讨论区