Python: как создать массив с информацией о каждом пикселе изображения? - PullRequest
1 голос
/ 04 февраля 2012

Например, изображение jpeg размером 3 на 3 пикселя шахматной доски должно выглядеть примерно так:

[[#000000, #FFFFFF, #000000],
[#FFFFFF, #000000, #FFFFFF],
[#000000, #FFFFFF, #000000]]

Мне кажется, что мне может понадобиться загрузить PIL, но я не могу сказать, что делает модуль изВеб-сайт.Мне также нужно иметь возможность генерировать изображения из этих типов массивов.Спасибо!

1 Ответ

3 голосов
/ 04 февраля 2012

Используйте метод Image.getdata .Метод возвращает генератор, который вы можете перебрать:

from PIL import Image
img = Image.open("a.png")
data = img.getdata()
for (r, g, b, a) in data:
    # do something with the pixel values

Чтобы пойти другим путем, вы используете Image.putdata.Это создает крошечное изображение шахматной доски:

>>> img = Image.new("L", (3, 3))
>>> data = [0, 255, 0, 255, 0, 255, 0, 255, 0]
>>> img.putdata(data)
>>> img.save("checkerboard.png")

Здесь я создал изображение в градациях серого (только один канал "свечения"), и поэтому я просто использовал одно целое значение для каждого пикселя.

...