.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 - дискретное косинусное преобразование (ДКП) для сжатых файлов изображений.
- TIFF версии 6.0 (RGB или YCbCr) для несжатых файлов изображений.
- RIFF WAV для аудиофайлов (Linear 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 содержит следующую информацию:
Bytes 0-1:
Порядок байтов, используемый в файле. Допустимые значения: «II» (4949.H) «MM» (4D4D.H).
В формате «II» порядок байтов всегда от младшего значащего байта до самого старшего байта как для 16-битных, так и для 32-битных целых чисел. Это называется порядком байтов с прямым порядком байтов. В формате «MM» порядок байтов всегда от старшего к младшему как для 16-битных, так и для 32-битных целых чисел. Это называется порядком байтов с прямым порядком байтов.
Bytes 2-3:
Произвольное, но тщательно выбранное число (42), которое дополнительно идентифицирует файл как файл TIFF. Порядок байтов зависит от значения байтов 0-1.
Bytes 4-7:
Смещение (в байтах) первого IFD. Каталог может находиться в любом месте файла после заголовка, но должен начинаться на границе слова. В частности, каталог файлов изображений может следовать за данными изображения, которые он описывает. Читатели должны следовать указателям, куда бы они ни вели. Термин «байтовое смещение» всегда используется в этом документе для обозначения положения относительно начала файла TIFF. Первый байт файла имеет смещение 0.
Каталог файлов изображений
IFD содержит информацию об изображении, а также указатели на фактические данные изображения. Он состоит из 2-байтового подсчета количества записей каталога (т. е. количества полей), за которым следует последовательность 12-байтовых записей полей. , за которым следует 4-байтовое смещение следующего IFD (или 0, если его нет). В файле TIFF должен быть как минимум 1 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).