ImageMagick: как определить ориентацию файла JPEG? - PullRequest
19 голосов
/ 21 февраля 2012

Какая команда ImageMagick отобразит ориентацию файла JPG?

Ответы [ 2 ]

19 голосов
/ 21 февраля 2012

Вы можете использовать

identify -format '%[EXIF:Orientation]' <image.jpg>

в соответствии с identify -format документами (немного ниже метаданные exif).

Попробуйте

identify -verbose <image.jpg>

Чтобы увидеть, какие метаданные находятся на изображении (например, если изображение не было снято с помощью камеры, тег ориентации не будет установлен).

В качестве альтернативы вы можете сделать что-то вроде

identify -format '%wx%h' <image.jpg>

, который дает вам ширину по высоте (например, «800x598», «1936x2592») и использует их, чтобы определить, является ли изображение вертикальным или нет (хотя не уверен, насколько это надежно - иногда вы делаете портретное изображение с помощью камеры и данные EXIF ​​будут правильно записывать ориентацию, но изображение может все еще появляться альбомная).

17 голосов
/ 15 октября 2016

Введение

Изображения хранят не только информацию о пикселях. Много информации хранится в виде метаданных. Изображения могут иметь несколько метаданных в нескольких каталогах метаданных. Вот некоторые примеры: Exif, IPTC, JFIF, Ducky и т. Д.

Ориентация является одним из таких тегов метаданных в каталоге Exif. Эти метаданные информируют ваши устройства отображения о том, как ориентировать изображение после декодирования данных пикселей. Эти метаданные имеют допустимые значения от 1 до 8. Эти метаданные не всегда присутствуют в изображениях , так как метаданные можно удалить из изображений. Также возможно установить для этих метаданных неправильные значения, такие как 0, 9, 17 и т. Д., Поскольку эти метаданные поддерживают 16-битные значения без знака (0-65535).

На рисунке ниже показано, как эти метаданные влияют на отображение изображения. Источник изображения: https://me94.me/2316.html

Affect of Orientation Metadata

Решение Imagemagick

Получение ориентации из Imagemagick (IM) может означать две вещи. Возможно, вам (в основном) будет интересно узнать, какую ориентацию имеет изображение, а второе - узнать точное значение тега метаданных ориентации (я полагаю, в редких случаях).

Чтобы узнать ориентацию, у вас есть две IM-команды (небольшая разница в том, что они выводят).

  1. identify -format '%[EXIF:orientation]' <InputFileName> [Чтобы получить точное значение метаданных.]
  2. 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...