Python中的二进制列表转换为PNG

4

请原谅我的幼稚,但我对处理图像还是新手。假设我有一个二进制值列表[1,0,0,0,1,0,1,0,0,0,0,1,1,0....],它代表黑白图像中的像素。如何将这个列表转换为.png文件呢?


这只是一个一维列表吗? - Chris Eberle
是的,这只是一个一维列表,但我想制作一个5x5的图像,并且希望将0映射为纯黑色,将1映射为纯白色。我无法弄清楚如何使用BasicWolf的建议,它创建了一个图像,但该图像全是黑色。 - Nacre
1
实际上它大部分是黑色的。如果你采纳他的建议,你将会写下0和1,其中255个看起来非常黑。 - Chris Eberle
2个回答

4
使用Python Imaging Library来实现此目的。
有一个方法img = Image.frombuffer(mode, size, data),可以从“原始”数据(字符串)创建图像。您可以通过img.save('image.png', transparency=transparency)将其保存为PNG文件。

是的,但他想将0映射为纯黑色(0,0,0),将1映射为纯白色(255,255,255)。 - Chris Eberle

3

在BasicWolf的示例基础上进行扩展:

from PIL import Image
import struct

size = 5, 5
arr = [1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0]
data = struct.pack('B'*len(arr), *[pixel*255 for pixel in arr])
img = Image.frombuffer('L', size, data)
img.save('image.png')

我认为这就是你想要的内容...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接