Введение
Изображения хранят не только информацию о пикселях. Много информации хранится в виде метаданных. Изображения могут иметь несколько метаданных в нескольких каталогах метаданных. Вот некоторые примеры: Exif, IPTC, JFIF, Ducky и т. Д.
Ориентация является одним из таких тегов метаданных в каталоге Exif. Эти метаданные информируют ваши устройства отображения о том, как ориентировать изображение после декодирования данных пикселей. Эти метаданные имеют допустимые значения от 1 до 8. Эти метаданные не всегда присутствуют в изображениях , так как метаданные можно удалить из изображений. Также возможно установить для этих метаданных неправильные значения, такие как 0, 9, 17 и т. Д., Поскольку эти метаданные поддерживают 16-битные значения без знака (0-65535).
На рисунке ниже показано, как эти метаданные влияют на отображение изображения. Источник изображения: https://me94.me/2316.html
Решение Imagemagick
Получение ориентации из Imagemagick (IM) может означать две вещи. Возможно, вам (в основном) будет интересно узнать, какую ориентацию имеет изображение, а второе - узнать точное значение тега метаданных ориентации (я полагаю, в редких случаях).
Чтобы узнать ориентацию, у вас есть две IM-команды (небольшая разница в том, что они выводят).
identify -format '%[EXIF:orientation]' <InputFileName>
[Чтобы получить точное значение метаданных.]
identify -format '%[orientation]' <InputFileName>
[Чтобы получить значение ориентации изображения, отображение значения exif в удобочитаемый термин.]
Для команды 1: -
Вывод является точным значением, даже если значение может быть недействительным. Например: - 0,1,5 или даже 65535. Однако, при отсутствии этих метаданных, вывод (IMHO неоднозначный вывод) будет:
identify: unknown image property "%[EXIF:orientation]" @ warning/property.c/ InterpretImageProperties/3785.
Для команды 2: -
Вывод следующий: -
Undefined - 0
Undefined - [When no metadata]
TopLeft - 1
TopRight - 2
BottomRight - 3
BottomLeft - 4
LeftTop - 5
RightTop - 6
RightBottom - 7
LeftBottom - 8
Unrecognized - any value between 9-65535, since
there is no mapping from value 9-65535
to some geometry like 'LeftBottom'
Протестировано на Mac и Ubuntu (EC2)