通过PIL将矩阵写入图像

时间:2010-12-15 10:41:19

标签: python graphics python-imaging-library

我有一个2D矩阵,我想写成一个PBM文件(它只有-1,1值,黑色和白色)。

我刚刚发现了PIL,但以下方法不起作用:

im = Image.new('L', (self.nx,self.ny))  
data=[[255*(self.spins[i][j][0].m+1)/2 for j in range(0,self.ny)]for i in range(0,self.nx)]  
im.putdata(data)   
im.save('my_image.pbm')  

也就是说,我得到了带有标题的PBM文件,但没有数据:

P5  
4 3  
255  

如果有人可以帮助我......

谢谢你!

alessandro

1 个答案:

答案 0 :(得分:3)

Image.putdata采用一维序列,而不是像你在代码中得到的那样的多维序列。

即。而不是使用像

这样的东西
[[v1, v2, v3],
 [v4, v5, v6],
 [v7, v8, v9]] 

保存传递给putdata的像素数据,它应该是

[v1, v2, v3, v4, v5, v6, v7, v8, v9]