Генерация изображения в Python с использованием Pillow (PIL)
Я пытаюсь сгенерировать полностью черное изображение 100x100 с помощью Python (v2.7.2) и Pillow (v2.4.0), и я получаю очень странный результат.
Это мой код
from PIL import Image
im = Image.frombytes('L', (100, 100), bytes([0] * 100 * 100))
im.show()
Это мой результат (увеличьте масштаб и, пожалуйста, не обращайте внимания на серую рамку - это из OS X Preview). Изображение должно быть черным, но это не так.
Что я делаю неправильно?
1 ответ
Результат bytes([0] * 10)
это строка "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"
, Итак, цвета ваших пикселей - это коды ASCII '['
, '0'
, ','
, ' '
, а также ']'
символы.
Чтобы получить байтовую строку из нулевых байтов, используйте bytes("\x00" * 100 * 100)
вместо. Вот \x00
это байт с шестнадцатеричным значением 00
,
На самом деле вам даже не нужно bytes(...)
вызов. bytes
это тип только в Python 3.x. В Python 2.7.x bytes
это просто псевдоним для str
,
Итак, окончательный код должен быть:
from PIL import Image
im = Image.frombytes('L', (100, 100), "\x00" * 100 * 100)
im.show()