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

时间:2012-02-04 18:51:07

标签: python arrays python-imaging-library pixel

例如,棋盘格的3像素乘3像素jpeg图像应该类似

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

我觉得我可能需要下载PIL,但我不知道该模块从他们的网站上做了什么。我还需要能够从这些类型的数组生成图像。谢谢!

1 个答案:

答案 0 :(得分: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")

这里我创建了一个灰度图像(只有一个“发光”通道),因此我只为每个像素使用了一个整数值。