ImageMagick: как определить ориентацию файла jpeg?
Какая команда ImageMagick отобразит ориентацию файла JPG?
Ответы
Ответ 1
Вы можете использовать
identify -format '%[EXIF:Orientation]' <image.jpg>
в соответствии с identify -format
docs (Немного дальше о метаданных exif).
Try
identify -verbose <image.jpg>
Чтобы увидеть, какие метаданные находятся на изображении (например, если изображение не было снято с помощью камеры, тег ориентации не будет установлен).
В качестве альтернативы вы можете сделать что-то вроде
identify -format '%wx%h' <iamge.jpg>
который дает вам ширину по высоте (например, "800x598", "1936x2592" ) и используйте их для определения того, является ли изображение вертикальным или нет (не уверен, насколько это достоверно - иногда вы берете портретное изображение с камерой и данные EXIF будут правильно записывать ориентацию, но изображение все равно может выглядеть как пейзаж).
Ответ 2
Введение
Изображения хранят не только информацию о пикселях. Много информации хранится в виде метаданных. Изображения могут иметь несколько метаданных в нескольких каталогах метаданных. Вот некоторые примеры: 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)