2010-12-15 3 views
1

У меня есть 2D-матрица, которую я хочу написать как файл 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') 

что я получаю мой файл РВМ с его заголовком, но данные:

P5 
4 3 
255 

если кто-то может помочь мне здесь ...

спасибо!

Alessandro

ответ

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