Какво е EXIF файл?
EXIF означава „Формат за обменен файл на изображението“, определението, дадено за първи път от Японската асоциация на фотоапаратите (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 Header |
49492A00 08000000 | TIFF заглавка |
XXXX. . . . | IFD0 (основно изображение) |
LLLLLLLL | Връзка към IFD1 |
XXXX. . . . | Област с данни на IFD0 |
XXXX. . . . | Exif SubIFD |
00000000 | Край на връзката |
XXXX. . . . | Област с данни на Exif SubIFD |
XXXX. . . . | IFD1(миниатюрно изображение) |
00000000 | Край на връзката |
XXXX. . . . | Област с данни на IFD1 |
FFD8XXXX. . . XXXXFFD9 | Миниизображение |
TIFF Header
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, ако няма). Трябва да има поне 1 IFD в TIFF файл и всеки 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) Tag в IFD1 е ‘6’, форматът на миниатюрното изображение е JPEG. Повечето Exif изображения използват JPEG формат за миниатюра. В този случай можете да получите отместване на миниатюрата чрез JpegIFOffset(0x0201) таг в IFD1, размер на миниатюрата чрез JpegIFByteCount(0x0202) таг. Форматът на данните е обикновен JPEG формат, започва от 0xFFD8 и завършва с 0xFFD9. Изглежда, че форматът JPEG и размерът 160x120 пиксела са препоръчителен формат за миниатюри за Exif2.1 или по-нова версия.
Миниатюра във формат TIFF
Ако стойността на Compression(0x0103) Tag в IFD1 е ‘1’, форматът на миниатюрното изображение е без компресия (наречен TIFF изображение). Началната точка на данните за миниатюрата е етикет StripOffset(0x0111), размерът на миниатюрата е сумата от етикета StripByteCounts(0x0117).