Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

"Режимы"

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

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

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

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

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

Они используются внутренне необработанным декодером, который преобразует несжатые данные из файла изображения в формат, понятный объекту Image PIL. В несколько раз больше "необработанных режимов", чем "режимов", и они передают информацию не только о типе (цветной или в оттенках серого) и битовой глубине пикселей в изображении, но также и об их расположении в файле. Например, необработанный режим 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