Що таке файл EXIF?
EXIF розшифровується як «Exchangeable Image File Format», визначення, яке вперше дало Японська асоціація камерної промисловості (JCIA) у 1985 році. Стандартом керує Japan Electronics та Асоціація промисловості інформаційних технологій (JEITA) на сьогодні. EXIF — це стандарт для специфікацій форматів зображення та звуку, які переважно використовуються цифровими камерами та сканерами.
Стандарт EXIF містить інформацію про теги та метадані файлу зображення. Метадані можуть містити таку інформацію, як модель камери, швидкість затвора, дата й час, діафрагма, виробник, час експозиції, роздільна здатність X, роздільна здатність Y тощо. Зазвичай дані EXIF приховані за замовчуванням. Щоб переглянути дані EXIF, потрібно вибрати властивості перегляду в програмі перегляду зображень. Метадані Exif також можуть містити мініатюри разом із технічними та основними даними зображення в одному файлі зображення.
Історія та версії
- У жовтні 1995 року JEIDA створила версію 1. У цій версії JEIDA визначила структуру, яка складається з формату даних зображення та інформації про атрибути, а також основних тегів.
- Листопад 1997 року, була представлена версія 1.1 з більшістю тегів із версії 1, але також додано положення для додаткової інформації про атрибути та операції формату.
- Червень 1998 року, версія 2 із простором кольорів sRGB, стислими мініатюрами та аудіофайлами.
- Грудень 1998 р., версія 2.1 з розширеним сховищем і інформацією про атрибути.
- Лютий 2002, версія 2.2, покращена версія 2.1 з додаванням фінішної обробки.
- Вересень 2003 р., версія 2.21 з додатковим простором кольорів, відомим як Adobe RGB.
Формат файлу EXIF
EXIF використовує такі формати файлів із додаванням певних метаданих.
- JPEG - дискретне косинусне перетворення (DCT) для файлів стислих зображень.
- TIFF Rev. 6.0 (RGB або YCbCr) для файлів зображень без стиснення.
- RIFF WAV для аудіофайлів (лінійний PCM або ITU-T G.711 μ-Law PCM для нестиснених аудіоданих та IMA-ADPCM для стиснених аудіоданих).
Маркер, який використовується EXIF
Маркер 0xFFE0~~0xFFEF — це «Маркер програми», який використовується програмою користувача. Наприклад, старіші цифрові камери використовують JFIF (формат обміну файлами JPEG) для зберігання зображень. JFIF використовує маркер APP0 (0xFFE0) для вставлення конфігураційних даних цифрової камери та мініатюрного зображення. Крім того, EXIF також використовує маркер програми для вставки даних, але EXIF використовує маркер APP1 (0xFFE1), щоб уникнути конфлікту з форматом JFIF. Кожен формат файлу EXIF починається з цього формату.
Маркер SOI | Маркер APP1 | Дані APP1 | Інший маркер |
---|---|---|---|
FFD8 | FFE1 | SSSS 457869660000 TTTT…… | FFXX SSSS DDDD…… |
Він починається з маркера SOI (0xFFD8), тому це файл JPEG. Потім відразу ж слідує маркер APP1. Усі дані EXIF зберігаються в цій області даних APP1. Частина «SSSS» у верхній таблиці означає розмір області даних APP1 (область даних EXIF). Зверніть увагу, що розмір “SSSS” також включає розмір самого дескриптора. Після “SSSS” починаються дані APP1. Перша частина — це спеціальні дані для ідентифікації EXIF чи ні, символ ASCII «EXIF» і 2 байти 0x00. Після області маркера APP1 слідують інші маркери JPEG.
Структура даних Exif
Приблизну структуру даних EXIF (APP1) показано нижче. Як обговорювалося вище, дані EXIF починаються з символу ASCII “EXIF” і 2 байтів 0x00, потім йдуть дані EXIF. EXIF використовує формат TIFF для зберігання даних.
FFE1 | Маркер APP1 |
---|---|
SSSS | Дані APP1 |
45786966 0000 | Заголовок Exif |
49492A00 08000000 | Заголовок TIFF |
XXXX. . . . | IFD0 (основне зображення) |
LLLLLLLL | Посилання на IFD1 |
XXXX. . . . | Область даних IFD0 |
XXXX. . . . | Exif SubIFD |
00000000 | Кінець посилання |
XXXX. . . . | Область даних Exif SubIFD |
XXXX. . . . | IFD1(ескіз зображення) |
00000000 | Кінець посилання |
XXXX. . . . | Область даних IFD1 |
FFD8XXXX. . . XXXXFFD9 | Ескіз зображення |
Заголовок TIFF
8-байтовий заголовок файлу TIFF містить таку інформацію:
Байти 0-1
: порядок байтів у файлі. Допустимі значення: «II» (4949.H) «MM» (4D4D.H).
У форматі «II» порядок байтів завжди встановлюється від молодшого байта до старшого байта як для 16-бітних, так і для 32-бітних цілих чисел. Це називається порядком байтів у порядку байтів. У форматі «MM» порядок байтів завжди встановлюється від старшого до молодшого як для 16-бітних, так і для 32-бітних цілих чисел. Це називається порядком байтів у порядку байтів.
Байти 2-3:
довільне, але ретельно вибране число (42), яке додатково ідентифікує файл як файл TIFF. Порядок байтів залежить від значення байтів 0-1.
Байти 4-7
: зсув (у байтах) першого IFD. Каталог може бути в будь-якому місці у файлі після заголовка, але повинен починатися на межі слова. Зокрема, каталог файлів зображень може слідувати за даними зображень, які він описує. Читачі повинні слідувати вказівникам, куди б вони не вели. Термін зміщення байтів завжди використовується в цьому документі для позначення розташування відносно початку файлу TIFF. Перший байт файлу має зміщення 0.
Каталог файлів зображень
IFD містить інформацію про зображення, а також покажчики на фактичні дані зображення. Він складається з 2-байтового підрахунку кількості записів каталогу (тобто кількості полів), за якими йде послідовність 12-байтових записів полів. , а потім 4-байтовий зсув наступного IFD (або 0, якщо його немає). У файлі TIFF має бути принаймні 1 IFD, і кожен IFD має мати принаймні один запис.
Запис IFD
Кожен 12-байтовий запис IFD має такий формат.
Байт | Опис |
---|---|
0-1 | Тег, що ідентифікує поле |
2-3 | Тип поля |
4-7 | Граф зазначеного типу |
8-11 | Зміщення значення, зміщення файлу (у байтах) значення для поля. Очікується, що значення починається на межі слова; Таким чином, відповідне зсув значення буде парним числом. Це зміщення файлу може вказувати будь-де у файлі, навіть після даних зображення |
Поле TIFF - це логічна сутність, що складається з тегу TIFF і його значення. Ця логічна концепція реалізована як запис IFD плюс фактичне значення, якщо воно не вписується в частину значення/зміщення, останні 4 байти запису IFD. Терміни поле TIFF і запис IFD є взаємозамінними в більшості контекстів.
Мініатюра
Формат Exif містить мініатюру зображення (крім Ricoh RDC-300Z). Зазвичай він розташований поруч з IFD1. Є 3 формати мініатюр; Формат JPEG (JPEG використовує YCbCr), формат RGB TIFF, формат YCbCr TIFF.
Мініатюра формату JPEG
Якщо значення мітки Compression(0x0103) у IFD1 дорівнює «6», мініатюра має формат JPEG. Більшість зображень Exif використовує формат JPEG для мініатюр. У цьому випадку ви можете отримати зміщення мініатюри за допомогою тегу JpegIFOffset(0x0201) в IFD1, розмір мініатюри за допомогою тегу JpegIFByteCount(0x0202). Формат даних — звичайний формат JPEG, починається з 0xFFD8 і закінчується 0xFFD9. Здається, що формат JPEG і розмір 160x120 пікселів є рекомендованим форматом ескізів для Exif2.1 або новішої версії.
Мініатюра формату TIFF
Якщо значення мітки Compression(0x0103) у IFD1 дорівнює «1», формат ескізу зображення не стискається (називається зображенням TIFF). Початковою точкою даних ескізу є тег StripOffset(0x0111), розміром ескізу є сума тегу StripByteCounts(0x0117).