EXIF (Exchangeable Image File Format) — это блок, содержащий метаданные о съемке, такие как экспозиция, объектив, временные метки и даже GPS, который камеры и телефоны встраивают в файлы изображений. Он использует систему тегов в стиле TIFF, упакованную в такие форматы, как JPEG и TIFF. Это необходимо для поиска, сортировки и автоматизации в фотобиблиотеках, но неосторожное обращение может привести к непреднамеренной утечке данных (ExifTool и Exiv2 упрощают проверку).
На низком уровне EXIF повторно использует структуру каталога файлов изображений (IFD) формата TIFF и в JPEG находится внутри маркера APP1 (0xFFE1), эффективно вкладывая небольшой файл TIFF в контейнер JPEG (обзор JFIF; портал спецификаций CIPA). Официальная спецификация — CIPA DC-008 (EXIF), в настоящее время версии 3.x — документирует компоновку IFD, типы тегов и ограничения (CIPA DC-008; краткое изложение спецификации). EXIF определяет выделенный подкаталог GPS (тег 0x8825) и IFD взаимодействия (0xA005) (таблицы тегов Exif).
Детали реализации имеют значение. Типичные JPEG-файлы начинаются с сегмента JFIF APP0, за которым следует EXIF в APP1. Старые программы чтения ожидают сначала JFIF, в то время как современные библиотеки без проблем анализируют оба формата (примечания к сегменту APP). На практике, парсеры иногда предполагают порядок или ограничения размера APP, которые не требуются спецификацией, поэтому разработчики инструментов документируют специфические особенности и крайние случаи (руководство по метаданным Exiv2; документация ExifTool).
EXIF не ограничивается JPEG/TIFF. Экосистема PNG стандартизировала фрагмент eXIf для переноса данных EXIF в файлы PNG (поддержка растет, и порядок фрагментов относительно IDAT может иметь значение в некоторых реализациях). WebP, формат на основе RIFF, размещает EXIF, XMP и ICC в выделенных фрагментах (контейнер WebP RIFF; libwebp). На платформах Apple Image I/O сохраняет данные EXIF при преобразовании в HEIC/HEIF вместе с данными XMP и информацией о производителе (kCGImagePropertyExifDictionary).
Если вы когда-нибудь задавались вопросом, как приложения определяют настройки камеры, карта тегов EXIF — это ответ: Make, Model,FNumber, ExposureTime, ISOSpeedRatings, FocalLength, MeteringMode и другие находятся в основном и EXIF-подиректориях (теги Exif; теги Exiv2). Apple предоставляет их через константы Image I/O, такие как ExifFNumber