2010-12-15 113 views
1

我有一個二維矩陣,我想寫作一個PBM文件(它只有-1,1值,黑色&白色)。寫矩陣圖像的PIL

我剛剛發現約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 

如果有人可以幫助我在這裏...

謝謝!

亞歷山德羅

回答

3

Image.putdata採用一維序列,而不是一個多維序列就像你在你的代碼的本事。

I.e.而不是使用像

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

東西,認爲被傳遞給putdata您的像素數據,應該是

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

的感謝!你完美地解決了它... – alessandro 2010-12-15 10:56:58

+0

順便說一句,由此解決: data = [255 *(self.spins [i] [j] [0] .m + 1)/ 2在範圍內(0,self.ny )爲我在範圍內(0,self.nx)] 我只是希望,然而,PIL會在這種情況下輸出一些錯誤代碼... 我在哪裏可以找到一些很好的介紹呢? – alessandro 2010-12-15 10:58:29

+0

PIL的在線文檔(http://www.pythonware.com/library/pil/handbook/index.htm)非常好。 – 2010-12-15 11:02:33