Список изображений "моды"
Просматривая 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