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)