Python:如何创建包含图像每个像素信息的数组?

1 投票
1 回答
846 浏览
提问于 2025-04-17 12:20

举个例子,一个3像素乘3像素的棋盘格jpeg图片应该是这样的

[[#000000, #FFFFFF, #000000],
[#FFFFFF, #000000, #FFFFFF],
[#000000, #FFFFFF, #000000]]

我觉得我可能需要下载PIL这个库,但我在他们的网站上看不太明白这个模块是干什么的。我还需要能够从这些类型的数组生成图片。谢谢!

1 个回答

3

使用 Image.getdata 方法。这个方法会返回一个生成器,你可以通过它来逐个获取数据:

from PIL import Image
img = Image.open("a.png")
data = img.getdata()
for (r, g, b, a) in data:
    # do something with the pixel values

如果你想反向操作,可以使用 Image.putdata。这个方法可以生成一个小的棋盘图案:

>>> img = Image.new("L", (3, 3))
>>> data = [0, 255, 0, 255, 0, 255, 0, 255, 0]
>>> img.putdata(data)
>>> img.save("checkerboard.png")

在这里,我创建了一个灰度图像(只有一个“亮度”通道),所以我只用一个整数值来表示每个像素。

撰写回答