创建灰度图像

时间:2010-01-21 17:02:15

标签: python python-imaging-library

我正在从一个文件中读取二进制数据,该文件指定x和y坐标(不是开源图像格式)的强度值,并希望将其转换为PNG图像(或其他广泛支持的格式)。我将数据加载到一个数组中(使用数组模块),其中每个元素是0到255之间的整数。要将其保存到PNG,我可以创建每个元素(x)的3项元组,如下所示:

t = (x, x, x)

add使用map()在数组中应用它,然后使用putdata()保存图像。但是,转换为元组数组需要很长时间(几分钟)。有没有办法只使用一个整数(不是元组)来指定rgb值。我猜一个替代方案是使用NumPy,但我不知道从哪里开始,所以在这方面的任何帮助也将受到赞赏。

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:13)

创建新图像时,请将模式设为L:

im = Image.new('L', size)
im.putdata([x1, x2, x3, ...])

数据是值列表而不是元组。

答案 1 :(得分:3)

有几种方法可以执行此操作,但如果您已将数据存储在内存中,请使用Image.frombuffer模式使用Image.fromstring'L'(对于8位灰度数据) )。

答案 2 :(得分:0)

im.putpixel(xy,color)会成为你想要的吗?