2010-12-15 4 views
1

PBM 파일로 쓰고 싶은 2D 행렬이 있습니다 (단지 -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은 한 차원 순서가 아닌 코드에서 뭘 찾았는지와 같은 다차원 순서를합니다.

e.e. 대신 putdata에 전달되는 당신의 픽셀 데이터를 포함하는

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

같은 것을 사용하여, 그것은

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

감사해야합니다! 당신은 그것을 완벽하게 해결했습니다 ... – alessandro

+0

BTW, this by : data = [255 * (self.spins [i] [j] [0] .m + 1)/2 범위의 (0, self.ny) for range (0, self.nx)] 그러나이 경우 PIL은 다음과 같은 경우에 몇 가지 오류 코드를 출력합니다. 어디서 좋은 소개를 찾을 수 있습니까? – alessandro

+0

PIL (http://www.pythonware.com/library/pil/handbook/index.htm)에 대한 온라인 설명서가 우수합니다. –