Python:如何创建包含图像每个像素信息的数组?
举个例子,一个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")
在这里,我创建了一个灰度图像(只有一个“亮度”通道),所以我只用一个整数值来表示每个像素。