Список изображений "моды" - PullRequest
35 голосов
/ 17 ноября 2010

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

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

1 Ответ

26 голосов
/ 17 ноября 2010

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

"Режимы"

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

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

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

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

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

Они используются внутри raw декодером , который преобразует несжатые данные из файла изображения в формат, понятный объекту 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

...