написать матрицу для изображения по PIL - PullRequest
1 голос
/ 15 декабря 2010

У меня есть 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  

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

спасибо!

Алессандро

1 Ответ

3 голосов
/ 15 декабря 2010

Image.putdata принимает одномерную последовательность, а не многомерную последовательность, как в вашем коде.

Т.е. вместо того, чтобы использовать что-то вроде

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

для хранения ваших данных пикселей, которые передаются в putdata, это должно быть

[v1, v2, v3, v4, v5, v6, v7, v8, v9]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...