Ориентация изображения - это направление, в котором повернута картинка при просмотре: вертикально, вверх ногами, на боку или зеркально. В метаданных файла поле Orientation указывает программам, как повернуть сохраненное изображение, чтобы оно отображалось вертикально.
В фотографии ориентация часто означает книжную (портретную) или альбомную. Портретное изображение выше, чем шире, а альбомное шире, чем выше. Когда вы делаете снимок, камера или телефон сохраняет положение устройства как данные ориентации в файле.
Какие файлы его содержат
Тег Orientation является частью стандарта Exif, который перенял его из формата TIFF. Его ID тега - 0x0112, или 274 в десятичном виде. Стандарт указывает его как рекомендуемый тег для основного изображения, и вы найдете его в этих файлах:
- JPG и TIFF-фотографии с камер и телефонов
- Изображения HEIC, PNG и WebP, которые все могут содержать блок данных Exif
Файл HEIC также может хранить поворот и зеркальное отражение как отдельные свойства контейнера с именами irot и imir. Некоторые камеры добавляют и приватный тег. Некоторые модели Canon записывают CameraOrientation, который в отчете о метаданных отображается как Horizontal (normal), Rotate 90 CW или Rotate 270 CW.
Как выглядят значения
Внутри файла значение представляет собой число от 1 до 8. Каждое число указывает, где первая строка и первый столбец сохраненных пикселей должны располагаться на экране. В отчете о метаданных обычно показывается словесное значение, где CW означает по часовой стрелке:
1- этоHorizontal (normal): изображение сохранено вертикально, ничего не меняется3- этоRotate 180: изображение сохранено вверх ногами6- этоRotate 90 CW: программа поворачивает изображение на 90 градусов по часовой стрелке перед показом8- этоRotate 270 CW: программа поворачивает изображение на 270 градусов по часовой стрелке, то есть на 90 градусов против часовой2,4,5и7добавляют зеркальное отражение, напримерMirror horizontal
Стандарт помечает все остальные числа как зарезервированные. Поэтому значение вне диапазона от 1 до 8 не имеет определенного смысла.
Как видеофайлы сохраняют поворот
Видеообъекты работают с ориентацией по-другому. Файл MP4 или MOV хранит матрицу отображения в заголовке своей видеодорожки. Эта матрица сообщает плееру, как повернуть или отразить кадры перед показом.
Программы, которые читают метаданные, преобразуют эту матрицу в один угол в градусах. ExifTool отсчитывает угол по часовой стрелке, а FFmpeg - против часовой в диапазоне от -180 до 180. Поэтому одно и то же видео может показывать 90 в одном отчете и -90 в другом.
Почему это важно для вашего файла
Значение Orientation не перемещает пиксели. Пиксели остаются в том порядке, в котором их сохранила камера, а тег только указывает просмотровщику, как их показывать. Веб-браузеры по умолчанию учитывают этот тег, но программа, которая его игнорирует, покажет портретную фотографию, лежащей на боку.
Поэтому ширина и высота могут выглядеть как поменявшиеся местами. Image Width и Image Height описывают сохраненные пиксели до любого поворота. Поэтому портретное фото с Rotate 90 CW может показывать ширину, которая больше высоты.
Редактирование может вызвать вторую проблему. Если программа поворачивает пиксели, но сохраняет старый тег, изображение будет повернуто дважды. Стандарт Exif рекомендует, чтобы программы редактирования после поворота изображения возвращали значение Orientation к 1.
Страницы PDF используют отдельное поле. Page Rotation поворачивает всю страницу по часовой стрелке с шагом 90 градусов при отображении или печати.