Список изображений "моды"

Просматривая PIL (и связанный с этим вопросом), где я могу получить полный список режимов изображения? Я вижу "RGB", "RGBX", мой код каким-то образом имеет "BGRX", хотя он не упоминается в документах PIL, которые я вижу. Как узнать, что есть, что поддерживает PIL и какие надлежащие режимы выбрать, например, при взаимодействии с вызовами Windows API?

По сути, я очень мало знаю о режимах изображения и хотел бы узнать больше, чем просто буквы, которые нужно вставить, чтобы он волшебным образом работал.

1 ответ

Решение

В Pillow есть две разные концепции, с похожими названиями:

"Режимы"

Они перечислены по адресу https://pillow.readthedocs.io/en/latest/handbook/concepts.html.

По этим документам:

Режим изображения определяет тип и глубину пикселя в изображении.

Этот вид "режима" - это то, что раскрывается через Image"s .mode атрибут, может быть изменен через .convert() метод, и может быть передан методам, которые принимают mode параметр. Они не такие, как "сырые режимы".

"Необработанные режимы"

Они используются внутренне необработанным декодером, который преобразовывает несжатые данные из файла изображения в формат, который PIL Image объект может понять. В несколько раз больше "необработанных режимов", чем "режимов", и они передают информацию не только о типе (цветной или в оттенках серого) и битовой глубине пикселей в изображении, но также и об их расположении в файле. Например, сырой режим RGB;L задокументировано как означающее "24-битный истинный цвет, чередование строк (сначала все красные пиксели, все зеленые пиксели, наконец все синие пиксели)".

Как отмечено в документах, связанных выше (а также в старой документации PIL), список необработанных режимов можно найти в Unpack.c, Вы найдете список в конце файла.

Unpack.c из текущей основной ветки Pillow: https://github.com/python-pillow/Pillow/blob/master/src/libImaging/Unpack.c

Unpack.c из окончательного выпуска PIL: http://svn.effbot.org/public/tags/pil-1.1.7/libImaging/Unpack.c

Другие вопросы по тегам