2011-04-15 44 views
4

請原諒我的任何天真,但我對圖像的使用很陌生。假設我有一個二進制值列表[1,0,0,0,1,0,1,0,0,0,0,1,1,0 ....],它們表示黑白圖像中的像素。我將如何去從這個列表中創建一個.png文件?在Python中使用PNG的二進制列表

+0

這只是一個1-d列表? – 2011-04-15 05:40:21

+0

是的,它只是一個一維的列表,但我想製作一張5x5的圖像,並且想要將0映射到純黑色,將1映射到純白色。我無法弄清楚如何使用BasicWolf的建議,它創建一個圖像,但圖像是全黑的。 – Nacre 2011-04-15 16:26:43

+1

其實它大多是黑色的。如果你採納他的建議,你會寫0和1,在255中看起來很黑。 – 2011-04-15 16:37:33

回答

4

爲此目的使用Python Imaging Library。

有一種img = Image.frombuffer(mode, size, data)方法,它從「原始」數據(字符串)創建圖像。您可以然後通過img.save('image.png', transparency=transparency)

+0

是的,但他希望將0映射到純黑色(0,0,0)和1到純白色(255,255,255) – 2011-04-15 14:04:01

3

擴展在BasicWolf的例子保存爲PNG文件:

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') 

我覺得這是你追求的...

+0

是的,它的功能非常好,謝謝你的幫助。 – Nacre 2011-04-15 17:40:26

+0

感謝您的擴展! – 2012-10-22 15:02:03