我正在从一个文件中读取二进制数据,该文件指定x和y坐标(不是开源图像格式)的强度值,并希望将其转换为PNG图像(或其他广泛支持的格式)。我将数据加载到一个数组中(使用数组模块),其中每个元素是0到255之间的整数。要将其保存到PNG,我可以创建每个元素(x)的3项元组,如下所示:
t = (x, x, x)
add使用map()在数组中应用它,然后使用putdata()保存图像。但是,转换为元组数组需要很长时间(几分钟)。有没有办法只使用一个整数(不是元组)来指定rgb值。我猜一个替代方案是使用NumPy,但我不知道从哪里开始,所以在这方面的任何帮助也将受到赞赏。
提前感谢您的帮助。
答案 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)会成为你想要的吗?