Перейти к содержимому
pdftools.kz

Что такое EXIF

EXIF — служебный блок внутри файла снимка: модель камеры или телефона, выдержка, диафрагма, дата съёмки, иногда координаты места. Почти все эти поля никак не влияют на изображение, кроме одного — ориентации. Камера часто пишет пиксели так, как их снял сенсор, и добавляет тег «поверни на четверть». Программа, которая тег игнорирует, показывает снимок лежащим на боку.

Локально в браузеребез регистрации

Коротко о цифрах

Значения тега
1–8; значения 5–8 разворачивают кадр на четверть и меняют стороны местами
Пробник
JPEG 2×1 с тегом ориентации 6: декодер, вернувший 1×2, применил тег
Ручное чтение
тег ищется в первых 256 КБ файла
После обработки
EXIF не переносится: вывод кодируется из холста
PNG
тега ориентации не имеет

Тег ориентации и восемь его значений

  • 1 — снимок хранится как есть, поворачивать не нужно.
  • 3 — разворот на сто восемьдесят градусов: телефон снимали «вверх ногами».
  • 6 и 8 — четверть оборота в одну и другую сторону, самый частый случай для вертикальных фото.
  • Значения от 5 до 8 меняют стороны местами: снимок 4000 на 3000 после разворота становится 3000 на 4000, и это надо учитывать до создания холста.
  • Остальные значения описывают зеркальные отражения и встречаются редко.

Почему мы проверяем поведение декодера, а не наличие возможности

Очевидный подход — спросить у браузера, умеет ли он применять тег, — не работает. Один известный браузер два выпуска подряд принимал соответствующую настройку и молча возвращал неповёрнутые пиксели. Проверка «есть ли такая возможность» ложна в обе стороны: возможность может быть заявлена и не работать, а работать она может и без заявления.

Поэтому проверяется эффект. В коде зашит крошечный снимок два на один пиксель с тегом ориентации 6. Он декодируется один раз при первом обращении: если браузер вернул его как один на два, значит тег применён, и ему можно доверять всю остальную работу. Если вернул как есть — мы читаем тег из файла сами, сканируя начало файла, и разворачиваем холст вручную.

Что происходит с EXIF после обработки

  • Результат кодируется из холста, а холст никаких служебных блоков не хранит — координаты, модель камеры и дата съёмки в выходной файл не переносятся.
  • Побочный эффект приятный: снимок, отправленный после сжатия, не несёт с собой места съёмки.
  • Ориентация при этом сохраняется правильной, потому что она применена к самим пикселям, а не оставлена тегом.
  • Сборка PDF из фотографий учитывает тег так же: иначе вертикальные снимки ложились бы на страницу боком.
  • В PNG понятия EXIF-ориентации нет вовсе, поэтому и проблемы с разворотом у него не возникает.

Частые вопросы

Почему фото на телефоне ровное, а на компьютере лежит на боку?

Телефон применяет тег ориентации при показе, а программа на компьютере может его игнорировать и рисовать пиксели как есть. Само изображение при этом одинаковое — разница только в том, читают тег или нет.

Удаляет ли ваш сжиматель геометки?

Да, побочным образом. Результат собирается заново из холста, а служебные блоки в него не переносятся, поэтому координаты, модель камеры и дата съёмки в выходном файле отсутствуют.

Можно ли повернуть фото, не трогая пиксели?

Можно, если менять только тег ориентации — так делают некоторые просмотрщики. Но тогда результат снова зависит от того, читает ли этот тег программа получателя, и снимок может опять лечь на бок.

Есть ли EXIF в PNG и в PDF?

У PNG понятия EXIF-ориентации нет. В PDF служебные сведения хранятся своим способом — в свойствах документа и в XMP-пакете, а данные камеры туда не попадают вовсе.

Рядом