我有一个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
答案 0 :(得分:3)
Image.putdata采用一维序列,而不是像你在代码中得到的那样的多维序列。
即。而不是使用像
这样的东西[[v1, v2, v3],
[v4, v5, v6],
[v7, v8, v9]]
保存传递给putdata的像素数据,它应该是
[v1, v2, v3, v4, v5, v6, v7, v8, v9]