2010-12-15 9 views
1

私はPBMファイル(-1,1の値、黒の&白のみ)として書きたい2D行列を持っています。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は、1次元配列ではない、あなたのコード内で持っているもののような多次元のシーケンスをとります。

I.e.代わりにputdataに渡されているあなたのピクセルデータを保持するために

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

のようなものを使用するのではなく、

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

感謝する必要があります!あなたは完全にそれを解決しました... – alessandro

+0

これで解決しました: data = [255 *(self.spins [i] [j] [0] .m + 1)/ 2 jの範囲(0、self.ny )for range(0、self.nx)] しかし、私はちょうどPILがこのような場合にいくつかのエラーコードを出力することを望みます... ここで私はいくつかの良い紹介を見つけることができますか? – alessandro

+0

PILのオンラインドキュメント(http://www.pythonware.com/library/pil/handbook/index.htm)は優れています。 –