PixelAccess

PixelAccess 类提供对PIL.Image 数据的像素级读写访问。

注意

访问单个像素非常慢。如果您正在循环遍历图像中的所有像素,则可能可以使用 Pillow API 的其他部分以更快的方式执行。

ImageImageChopsImageOps 具有许多标准操作的方法。如果您想执行自定义映射,请查看 point()

示例

以下脚本加载图像,访问其中的一个像素,然后更改它。

from PIL import Image

with Image.open("hopper.jpg") as im:
    px = im.load()
print(px[4, 4])
px[4, 4] = (0, 0, 0)
print(px[4, 4])

结果如下

(23, 24, 68)
(0, 0, 0)

也可以使用负索引访问。

px[-1, -1] = (0, 0, 0)
print(px[-1, -1])

PixelAccess

class PixelAccess
__getitem__(self, xy: tuple[int, int]) float | tuple[int, ...]

返回坐标为 x,y 的像素。对于单波段图像,像素以单个值返回,对于多波段图像,像素以元组返回。

参数:

xy – 像素坐标,以 (x, y) 的形式给出。

返回:

对于单波段图像,返回像素值,对于多波段图像,返回像素值元组。

__setitem__(self, xy: tuple[int, int], color: float | tuple[int, ...]) None

修改坐标为 x,y 的像素。颜色以单个数值(对于单波段图像)或元组(对于多波段图像)给出。

参数:
  • xy – 像素坐标,以 (x, y) 的形式给出。

  • color – 按照其模式给出的像素值,例如,对于 RGB 模式,元组为 (r, g, b)。