Чтобы описать каждую точку цифрового изображения пиксель - picture element (элемент картинки, дословно) нужно задать несколько чисел. В случае растрового RGB 8 бит представления, каждый пиксель характеризуется тремя компьютерными 8 битными словами для каждого из каналов. В мегапиксельном изображении таких слов 3 миллиона. Поэтому графические файлы в растровом формате так велики. Записать попутно тысячу слов не составит труда и не потребуется никаких дополнительных затрат. Но эти «неграфические» слова - метаданные позволяют:
a) согласовать цвета и яркости воспринимаемые камерой или сканером с яркостью или цветами на дисплее компьютера,
б) знать съемочные настройки камеры для файла-изображения (избавится от бумажных блокнотов и диктофонов, хранящих памятные заметки),
в) подтвердить ваше авторское право,
г) найти нужное изображение в базе данных по ключевому слову или даже географической координате места съемки,
д) автоматически преобразовать файл в требуемый для вывода формат и корректно напечатать изображение в автоматическом режиме (в том числе без компьютера),
и еще много чего.DCF
Design Rule for Camera File System (описание в ) - индустриальный стандарт организации данных в устройствах получения, хранения, преобразования и вывода цифровых изображений. Принят в 1998 году (Japan Electronics Industry Development Association) для стандартизации процесса переноса данных между различными устройствами. Сейчас входит в (Japan Electronics and Information Technology Industries Association).
Правилам DCF подчиняется структура файлов на карте памяти цифрового аппарата. В привычном представлении это дерево папок с файлами и отдельными файлами. Изображения, обычно, хранятся во вложенных папках директории DCIM. В других хранятся видео и звуковые файлы, «системные» данные настроек камеры, шаблоны создания HTML галерей. Задания печати DPOF (папка MISC) позволяют принтеру прямой печати самостоятельно найти и выполнить задание печати.
Программное обеспечение, которым комплектуется камера, используя DCF информацию, автоматически копирует снимки с карты памяти на компьютер в базу данных, строит панорамы, открывает приложения для преобразования RAW файлов и выполняет многое другое, на что только хватило фантазии разработчиков.
Стандарт DCF включает так же и описание формата собственно графических файлов JPEG, TIFF, RAW. Графические файлы, в свою очередь, подчиняются правилам организаций и ассоциаций, утвердивших их. Стандарт EXIF входит в спецификацию DCF.
Структура данных на карте памяти камеры Epson L-500V
Для корректной работы различных устройств с мультимедийными файлами (звук, изображения) был принят стандарт универсальных заголовков файлов EXIF. EXIF - Exchangeble image format (версия 1.0 была опубликована в 1995 год). Формат предусматривает хранение в одном файле данных изображения или музыки, их уменьшенных копий (для JPEG рекомендуется 160×120), подраздела текстового описания данных.
Современная версия стандарта - Exif 2.2 (описание в ). Она включает так же технологию автоматического управления цветом и обработки изображения в соответствие с сюжетными съемочными настройками для вывода на печать или дисплей (версия 2.0 предполагала кодирование цвета в sRGB пространстве, в версии 2.2 цветовое пространство может быть любым).
Текстовая часть раздела Exif файла состоит из маркеров и тегов, описывающих определенный параметр (идентификатор и соответствующее ему имя параметра) и значение этого параметра (значение в определенном формате представления величины в виде ASCII кода, рационального, десятичного, шестнадцатеричного и т. д. числа). Набор тегов содержит более-менее стандартизованную и обязательную часть и разделы, «отданные» производителям техники и программного обеспечения для их специальных целей. Программное обеспечение, предназначенное для чтения EXIF данных, ставит в соответствие тегам их определения, а значениям - значения. При этом создатели не всегда придерживаются спецификации и потому случаются недоразумения. Так определение информационного поля может быть заменено соответствующим ему общепринятым эквивалентом, а значение не преобразовано в соответствующий формат. Или производитель камеры записывает в поле, соответствующее тегу, информацию в некорректном формате или вообще о другом параметре. Если это узкоспециализированная программа под определенную марку камер, то недоразумений обычно не бывает. Пользователь «обязан своей покупкой» подчиняться описанным в руководстве ПО правилам и, изучив свой аппарат и программу, будет понимать, о чем идет речь. Но если это универсальная программа, то путаница с неправильным наименованием тегов и форматированием, соответствующих им величин, случается не редко. Это неизбежная плата за универсальность. И еще за привычный язык, ведь по правилам EXIF языка, значения параметров всего лишь числа (например, дюйм - «1», см -«2»), а программа переводит их в понятные нам слова (что необязательно, например в виде чисел представлены некоторые параметры в Adobe Photoshop, Info раздел «Advanced EXIF»).
Рассмотрим информационную часть графического файла на примере цифрового снимка и программы чтения EXIF заголовков. Далее в таблице представлены основные теги формата EXIF на примере Canon EOS 300D и приложения В таблице так же приведены некоторые не отображаемые приложением теги, но о них полезно знать. Кроме ExifRead заголовки отображают и другие программы: , .
Тег | Описание | Пример JPEG Canon 300D по ExifRead |
Filename | имя файла | IMG_2614.JPG |
Application Marker | маркер, необходимый для корректного согласования пользовательских приложений с форматом записи служебной информации, маркер APP1 указывает на блок информации JPEG EXIF, APP0 - JFIF (JPEG File Interchange Format) стандарт, APP2 - FlashPix | JFIF_APP1: Exif |
Make | производитель камеры | Canon |
Model | модель камеры | Canon EOS 300D DIGITAL |
Orientation | ориентация камеры при съемке, положение угла кадра с координатой 0,0 | left-hand side |
XResolution | разрешение вывода (печати), точек на дюйм по Х координате | 180/1 |
YResolution | разрешение вывода (печати), точек на дюйм по У координате | 180/1 |
Resolution Unit | единица длины, на которую приведено разрешение вывода, «1» дюймы, «2» сантиметры | Inch |
DateTime | дата последнего изменения изображения | 2004:07:13 11:57:35 |
YCbCr Positioning | положение точки, определяющей цвет в ячейке YСbCr данных | Centered |
ExifOffset | сдвиг, положение Image file directory - блока изображения в файле | 196 |
Exposure Time | выдержка | 1/400 seconds |
FNumber | число диафрагмы | 11,0 |
ISO SpeedRatings | эквивалентная светочувствительности | 200 |
ExifVersion | версия формата Exif | 0221 |
DateTime Original | время съемки | 2004:07:13 11:57:35 |
DateTime Digitized | время создания цифрового файла | 2004:07:13 11:57:35 |
Components Configuration | формат представления данных в файле изображения | YCbCr |
Compressed BitsPerPixel | средняя степень компрессии JPEG | 3/1 (bits/pixel) |
Shutter SpeedValue | величина выдержки в представлении APEX | 1/400 seconds, корректный вид в APEX «8,6» (1/2 8,6) |
ApertureValue | величина апертуры в представлении APEX | F 11,0, корректный вид в APEX «7» (2 7/2) |
Exposure BiasValue | компенсация экспозиции в единицах EV (APEX) | EV0,0 |
Max ApertureValue | максимальная апертура объектива в представлении APEX | F 5,00, корректный вид в APEX «4,6» (2 (4,6)/2) |
Metering Mode | тип экспозамера,«0» не определено, «1» усредненный, «2» центрально-взвешенный, «3» точечный, «4» мультиточечный, «5» мультисегментный, «6» частичный, «255» другие. | Division |
Flash | вспышка | Not fired |
FocalLength | фокусное расстояние объектива на камере | 125,00(mm) |
UserComment | комментарии пользователя к файлу, если камера позволяет их задать | |
FlashPixVersion | совместимость с форматом представления данных FlashPix - стандарта International Imaging Industry Association - I3A | 0100 - совместимость с FlashPix format Ver.1.0 |
ColorSpace | цветовое пространство файла, DCF предполагает sRGB, которому соответствует значение маркера «1», иному пространству - «65535» (некалиброванное) | sRGB |
ExifImage Width | ширина изображения, пикселей | 2048 |
ExifImage Height | высота изображения, пикселей | 3072 |
Interoperability Offset | параметр, определяющий положение Image file directory - блока изображения в файле | 2366 |
FocalPlane XResolution | плотность сенсоров на матрице по Х координате | 2048000/595, или 3442 на дюйм, позволяет определить размер сенсора по Х - 25,4х2048/3442 = 15,11 мм или 25,4х595/1000 = 15,11 мм |
FocalPlane YResolution | плотность сенсоров на матрице по Y координате | 3072000/892, или 3443/дюйм размер сенсора 25,4х3072/3443 = 22,66 мм |
FocalPlane ResolutionUnit | единица измерения для плотности сенсоров, «1» не определено, «2» дюйм, «3» сантиметр | Meter, ошибка корректное значение Inch выдает приложение IrfanView |
Sensing Method | тип сенсора | One-chip color area sensor - одиночный сенсор с цветной матрицей фильтров |
FileSource | источник изображения | DSC - Digital still camera |
Custom Rendered | обработка изображения | Normal process |
Exposure Mode | режим экспоавтоматики | Auto |
Scene CaptureType | сюжетная программа | Standard |
Maker Note (Vendor) | раздел дополнительных параметров (параметры, приведенные далее), для разработчика, его положение | Canon Format: 1408Bytes (Offset:942) |
Macro mode | макрорежим при съемке | Off |
Self timer | таймер при съемке | Off |
Quality | JPEG сжатие | Fine |
Flash mode | режим вспышки | Off |
Sequence mode | режим смены кадров | Single-frame |
Focus mode | алгоритм фокусировки | One-Shot |
Image size | размер изображения | Large |
Easy shooting mode | программный режим | Manual |
Digital zoom | цифровой зум | |
Contrast | параметры обработки изображения, контраст | High , +1 |
Saturation | параметры обработки изображения, насыщенность | High , +1 |
Sharpness | параметры обработки изображения, резкость | High , +1 |
ISO Value | светочувствительность | 100 |
Metering mode | тип экспозамера | Evaluative |
Focus type | тип фокусировки | Unknown |
AF point selected | точка фокусировки | Unknown (8197) |
Exposure mode | экспозиционный режим | Aperture Priority |
Focal length | объектив на камере | 100-300 mm |
Flash activity | вспышка | Off |
Sequence number | кадр в серии снимков | 0 |
White Balance | замер баланса белого | Auto |
Flash bias | экспокоррекция вспышки в EV (APEX) | 0 EV |
Firmware Version | версия прошивки камеры | Firmware Version 1.1.1 |
Camera Serial Number (Irfan) Serial number (EXIF Reader) | серийный номер камеры | 1070439357 (Irfan) 3FCD-39869 (EXIF Reader) |
Image Number | номер снимка, снятого камерой, первые три цифры - номер папки, последние четыре - порядковый номер файла | 2262614 |
Owner Name | имя пользователя камеры, если персонифицирована | SergeySherbakov |
Color temp | цветовая температура | 5200K |
WhitePoint | определение точки белого изображения, если используется CIE стандарт D65 - величина «3127/10000,3290/10000» | |
Parameters | Параметры JPEG | Standard |
YCbCr Coefficients | для YCbCr представления коэффициенты преобразования в RGB format обычно «0.299/0.587/0.114» | |
Reference BlackWhite | определение точки черного/белого для YCbCr величины задают черную/белую точку для Y, Cb, Cr и каналов RGB | |
Copyright | копирайт | «Автор» для EXIF, заполнено в ACDSee |
Artist | автор | «Автор» заполнено в ACDSee |
ImageDescription | описание снимка | «EXIF теги Иллюстрация» заполнено в ACDSee |
Thumbnail Information Compression JPEGInterchangeFormat JPEGInterchangeFormatLength | информация об уменьшенной копии изображения в EXIF заголовке | OLDJPEG 2211 6492 |
Components Configuration | формат кодирования данных характеристик пикселя RGB «0x04,0x05,0x06,0x00», YCbCr «0x01,0x02,0x03,0x00» для справки: 0x01:Y, 0x02:Cb, 0x03:Cr, 0x04:Red, 0x05:Green, 0x06:Blue | |
Brightness Value | яркость сюжета в APEX, для вычисления Exposure (Ev) к BrigtnessValue (Bv) нужно добавить величину SensitivityValue (Sv) для справки: Ev=Bv+Sv Sv=log 2 (ISOSpeedRating / 3,125) ISO100:Sv=5, ISO200:Sv=6, ISO400:Sv=7 | |
Subject Distance | дистанция фокусировки, м | |
Light Source | источник света, установка баланса белого, «0» не задано, «1» daylight, «2» fluorescent, «3» tungsten, «10» flash, «17» standard A, «18» standard B, «19» standard C, «20» D55, «21» D65, «22» D75, «255» другие | |
Related SoundFile | имя аудио файла, прикрепленного к снимку | |
CFAPattern | геометрия фильтров на матрице (Color filter array-CFA) Например: | |
Photometric Interpretation | представление цвета: «1» монохромное изображение, «2» RGB, «6» YCbCr |
Можно сравнить EXIF данные для JPEG файла, полученные из программы Canon ZOOMBrowserEX и приложения ExifRead (поля тегов, которые в программе ExifRead отображаются как «Unknown» сокращены):
ExifRead | CanonZOOMBrowserEX |
Filename: IMG_2614.JPG JFIF_APP1: Exif Main Information Make: Canon Model: Canon EOS 300D DIGITAL Orientation: left-hand side XResolution: 180/1 YResolution: 180/1 ResolutionUnit: Inch DateTime: 2004:07:13 11:57:35 YCbCrPositioning: centered ExifInfoOffset: 196 Sub Information ExposureTime: 1/400Sec FNumber: F11,0 ISOSpeedRatings: 200 ExifVersion: 0221 DateTimeOriginal: 2004:07:13 11:57:35 DateTimeDigitized: 2004:07:13 11:57:35 ComponentConfiguration: YCbCr CompressedBitsPerPixel: 3/1 (bit/pixel) ShutterSpeedValue: 1/400Sec ApertureValue: F11,0 ExposureBiasValue: EV0,0 MaxApertureValue: F5,0 MeteringMode: Division Flash: Not fired FocalLength: 125,00(mm) MakerNote: Canon Format: 1408Bytes (Offset:942) UserComment: FlashPixVersion: 0100 ColorSpace: sRGB ExifImageWidth: 2048 ExifImageHeight: 3072 ExifInteroperabilityOffset: 2366 FocalPlaneXResolution: 2048000/595 FocalPlaneYResolution: 3072000/892 FocalPlaneResolutionUnit: Meter SensingMethod: OneChipColorArea sensor FileSource: DSC CustomRendered: Normal process ExposureMode: Auto WhiteBalance: Auto SceneCaptureType: Standard Vendor Original Information Self-timer: Off Quality: Fine FlashMode: Off Drive Mode: Single-frame Focus Mode: One-Shot ImageSize: Large Easy shooting mode: Manual Contrast: +1 Saturation: +1 Sharpness: +1 MeteringMode: Evaluative AF point selected: Unknown (8197) Focal length of lens: 100-300(mm) Flash Activity: Off Color Tone: Normal Unknown (0001)3,46: 005C ... FFFF Unknown (0002)3,4: 0,125,610,914 Unknown (0003)3,4: 100,0,0,0 White Balance: Auto Flash bias: 0 EV Unknown (0004)3,33: 0042 ... 0000 Unknown (0093)3,9: 18,0,0...,65535 Image type: IMG:EOS300DDIGITALJPEG Firmware version: FirmwareVersion1.1.1 Serial number: 3FCD-39869 Unknown (0015)4,1: -1879048192 Image Number: 2262614 Owner name: SergeySherbakov Unknown (0010)4,1: -2147483280 Unknown (000E)4,1: 2620984 Unknown (000D)1,512:0,...,0.0.0.0.0.0 Unknown (0000)3,18: 0,...0,0,0,0,0,0,0 Unknown (00C0)3,13: 001A ... CC 0190 Unknown (00C1)3,13: 001A ... C6 016C Unknown (00AA)3,5: 10,529...,1026,698 Unknown (00A8)3,10: 20,429...,0,0,0,0,0 Unknown (00A9)3,41: 82,...,129,127 Color temp: 5200K Parameters: Standard Unknown (0012)3,24: 7,7,...,65535 Unknown (0013)3,4: 0,159,7,112 Unknown (0000)3,5: 0,0,0,0,0 Unknown (00B6)4,12: 24,...,262146 ExifR98 ExifR: R98 Version: 0100 Unknown (4097) : 2048 Unknown (4098) : 3072 Thumbnail Information Compression: OLDJPEG XResolution: 180/1 YResolution: 180/1 ResolutionUnit: Inch JPEGInterchangeFormat: 2548 JPEGInterchangeFormatLength: 6492 | File Name IMG_2614.JPG Camera Model Name Canon EOS 300D DIGITAL Shooting Date/Time 13.07.2004 11:57:35 Shooting Mode Aperture-Priority AE Tv(Shutter Speed) 1/400 Av(Aperture Value) 11 Metering Mode Evaluative Exposure Compensation 0 ISO Speed 200 Lens 100.0 - 300.0mm Focal Length 125.0mm Image Size 2048x3072 Image Quality Fine Flash Off White Balance Auto AF Mode One-Shot AF Parameters Contrast +1 Sharpness +1 Color saturation +1 Color tone Normal Color Space sRGB File Size 2240KB Drive Mode Single-frame shooting Owner"s Name Sergey Sherbakov Camera Body No. 1070439357 |
EXIF данные для RAW (Canon EOS 300D) файла, полученные из программы ExifRead и приложения Canon ZOOMBrowserEX:
ExifRead | CanonZOOMBrowserEX |
Filename: CRW_5185.CRW Canon CRW Header CCDRAW Image: 4910386Bytes(offset:26) JPEG Image: 534464Bytes(offset:4910412) Unknown(1803) : 1,0 ImageSpec: 3072Ѓ~2048 ExpouserMode: Single Unknown(1804) : 0,1256 Unknown(1817) : 24817,6724 CapturedTime: 2004:10:16 10:17:02 ImageFileName: CRW_5185.CRW ThumbnailFileName: CRW_5185.THM Unknown(0805) : Unknown(1814) : 0,3724 Unknown(0805) : EOS 300D DIGITAL CMOS RAW ImageType: CRW:EOS 300D DIGITAL CMOS RAW OwnerName: Sergey Sherbakov ModelName: Canon EOS 300D DIGITAL Unknown(180B) : 39869,9577 ISOSensivity: 100 ROMOperationMode: USA FirmwareVersion: Firmware Version 1.1.1 ISOSensivity: 100 LensFocalLength: 18.0(mm) White Balance: Daylight Sequence number(Continuous mode) : 0 Flash bias: 0 EV Unknown(102A) : 66,0,...,0,0,0,0 Unknown(1093) : 18,0,......,5535 Self-timer: Off Quality: RAW FlashMode: Off Drive Mode: Single-frame Focus Mode: MF ImageSize: Large Easy shooting mode: Manual Contrast: Normal Saturation: Normal Sharpness: Normal MeteringMode: Evaluative ExposureProgram: Aperture Priority Focal length of lens: 18-55(mm) Flash Activity: Off Color Tone: Normal Unknown(102D) : 92,0,...,65535,65535 Unknown(0036) : 0E82 Unknown(1834) : 368,2833 CCDImageSize: 3152Ѓ~2068 Unknown(1835) : 1,0,514,4000 Unknown(1038) : 7,7,3072,...,0,65535 Unknown(10C0) : 26,336,....,460,400 Unknown(10C1) : 26,305,....,454,364 Unknown(10C2) : 884,....,78,151,28 Unknown(10AA) : 10,877,...,588 Unknown(10A8) : 20,3871,...,5200 Unknown(10AD) : 62,...,65099,65325 Unknown(10AE) : 5200 Unknown(10AF) : 1024 Unknown(10A9) : 82,1398,...,124,126 Unknown(10B4) : 2 Unknown(10B5) : 10,3,1,2048,1360 Unknown(1039) : 0,159,7,112 Unknown(183B) : 0 | File Name CRW_5185.CRW Camera Model Name Canon EOS 300D DIGITAL Shooting Date/Time 16.10.2004 10:17:02 Shooting Mode Aperture-Priority AE Tv(Shutter Speed) 1/30 Av(Aperture Value) 3.5 Metering Mode Evaluative Exposure Compensation 0 ISO Speed 100 Lens 18.0 - 55.0mm Focal Length 18.0mm Image Size 3072x2048 Image Quality RAW Flash Off White Balance Daylight AF Mode Manual Focus Parameters Contrast Normal Sharpness Normal Color saturation Normal Color tone Normal Color Space Adobe RGB File Size 5323KB Drive Mode Single-frame shooting Owner"s Name Sergey Sherbakov Camera Body No. 1070439357 |
Примечания.
1. Некоторые поля данных для тегов «Unknown» в таблицах сокращены.
2. Теги «ShutterSpeedValue», «ApertureValue» и некоторые другие (с идентификатором Value) в соответствии со стандартом EXIF записываются не в привычных фотографических величинах, а в APEX представлении. Иногда приложения для просмотра EXIF данных преобразуют APEX формат к привычному виду, иногда нет.
Что представляет собой формат APEX? APEX (The Additive System for Photographic Exposure) удобная форма записи и, главное, выражения соотношений экспозиционных условий. Удобная потому, что оперирует с логарифмическими величинами с основанием 2. В них удвоение экспозиции соответствует увеличению ее на один шаг, то есть на привычную ступень выдержки или диафрагмы. Чтобы подсчитать экспозицию в формате APEX достаточно воспользоваться простой формулой: AV + TV = LV + SV= EV. Где AV и TV соответственно APEX величина диафрагмы и выдержки, LV яркости, SV светочувствительности. При этом в APEX за нулевые значения величины AV = 0 принята диафрагма f/1,0, выдержки TV = 0 - 1 c, яркости LV=0 - 3,4 кандел/м*м, светочувствительности SV = 0 - 3,125 (в ISO).
Чтобы отличать фотографические термины «диафрагма», «выдержка» от величин в APEX принято все величины, выраженные в APEX формате сопровождать словом «величина» - как «Aperture value», а при сокращении добавлять букву «V» - как Av.
Интересно, что сейчас в камерах Canon с режимами приоритета выдержки и диафрагмы Tv и Av ряд значений на органах управления записан в привычных обратных секундах и диафрагменных числах. Объясняется это тем, что на камерах Canon «значки» Tv и Av появились, когда APEX формат был практически важен для вычисления экспозиции и популярен. И в качестве значений этих величин использовались величины APEX. Затем с развитием автоматики и унификации экспонометрических устройств практическая важность формата APEX для фотографа стала минимальной и от него отказались, вернувшись к привычным диафрагменным числам и секундам. А маркировка режимов у Canon осталась прежней ().
Как отображается информация в программе для просмотра съемочных параметров, зависит от разработчика. Формально тегу «Aperture value» соответствует величина в единицах APEX без всяких суффиксов и префиксов. Но, к примеру, в Canon ZOOM Browzer EX тег «Aperture value» отображается в формате диафрагменного числа, но без префикса «f/» (для ясности следовало бы писать именно так, то есть «f/»), а Tv, которое, тем не менее, расшифровывается как «Shutter Speed», как доля секунды без «c», то есть верно, если знать об истории появления значков Av/Tv на Canon. В ACDSee версии 5 «Aperture value» корректно отображается в единицах APEX, а в версии 7 в привычном формате «f/число». Определить, что скрывается за «Aperture value» в вашей программе, можно посмотрев на значение другого тега EXIF «F-number». Если числовые значения совпадают, то «Aperture value» отображается в диафрагменных числах, если нет - в APEX единицах. Тогда проверьте соответствие по формуле Aperture value = 2 х Log 2 F-number. (Легко заметить, что при f/4 - APEX - так же 4, но это единственное исключение).
3. Стандарты DCF и EXIF постоянно «расширяются» и к ним добавляются новые спецификации и, соответственно, теги. Кроме того, производители техники и ПО иногда вводят новые спецификации метаданных. Такие спецификации могут интегрироваться в EXIF, но могут быть и совершенно независимыми. Так в полях EXIF данных есть маркеры, указывающие на совместимость с форматами представления данных FlashPix (стандарта International Imaging Industry Association - I3A), маркеры описывающие расширение ExifR98, GPS данные и другие. С выходом EXIF PRINT, для автоматической обработки изображения в соответствие с сюжетной программой съемки к EXIF добавлены теги, описывающие «сюжетные» настройки цифровой камеры: вспышка, экспорежим, баланс белого, выдержка, дистанция до объекта, источник света, сюжетная программа, цифровой зум, постобработка, контраст, насыщенность, повышение резкости, шумоподавление. Альтернативная технология согласования печати и обработки PIM ( - EPSON, 2001 год) так же добавляет к метаданным 12 (PIM I) или 14 (PIM II) «сюжетных» пунктов.
Метаданные, редактируемые в ACDSee
Среди стандартных тегов EXIF есть предназначенные для систематизации хранения снимков на компьютере. Это: владелец камеры, имя пользователя, авторские права, описание и другие. Если их нельзя заполнить непосредственно при съемке, то нужно использовать либо «фирменное» ПО от камеры либо универсальные программы. К числу таких программ относятся, например, Adobe Photoshop и ACDSee. С их помощью можно изменить значения перечисленных тегов. Но нужно быть внимательным, не все «поля», которые можно заполнить в таких программах сохраняются как метаданные файла. Программа может хранить данные в своей базе данных и не записывать их в файл изображения. Так Adobe Photoshop помимо стандартных (перечисленных выше) полей описания файла, позволяет заполнить многие другие, а для RAW файлов записать даже «скорректированные» настройки камеры. Но хранится вся эта дополнительная информация либо в единой базе данных Photoshop на вашем компьютере, либо в виде переносимого вместе с основным файлом файла метаданных «*.XMP» (а сам RAW файл, по определению, не подвергается изменениям).
- Описание
- Cкриншоты
- Скачать
- Купить
- Справка
Photo EXIF Manager позволяет просматривать и редактировать самые известные теги цифровых фотографий стандарта EXIF 2.3. Теги представлены в таблице и сгруппированы в три основные группы Image, Camera и GPS. Редактирование осуществляется очень просто, двойной щелчок по тегу открывает диалог редактирования, это диалоговое окно отображает информацию о теге и способе его редактирования. Вы можете добавлять, редактировать, удалять некоторые теги. Так же есть функция очистки фотографии от EXIF тегов. Программа позволяет легко перемещаться по структуре каталогов, в целом навигация очень похожа на Windows Explorer, а область предварительного просмотра отображает выбранную фотографию.
Интерфейс хорошо продуман, что делает его понятным и простым в использовании, даже полный новичок может незамедлительно начать пользоваться программой. Под областью предварительного просмотра, находится файловая навигация, а справа от нее таблица отображения тегов. В таблице отображается информация о тегах выбранного изображения и их значение. Если вам нужно средство для обновления EXIF тегов фотографий в вашей коллекции, то это то, что вы должны попробовать.
Ключевые функции программы:
- импорт/экспорт тегов.
- удобная файловая навигация
- поддержка всех тегов стандарта 2.3.
- редактирование GPS тэгов.
- редактирование всех типов тэгов.
- просмотр изображения с учетом EXIF тэгов.
- возможность удаления всех EXIF тэгов.
Системные требования: Windows PC, Framework .Net 4.0.
Так еще и внутри фотографии можно зашифровать большущую кучу скрытых данных. Стандарт, шифрующий эти, так называемые метаданные , получил название EXIF (англ. Exchangeable Image File Format) .
Конечно, речь не идет о скрытых посланиях и тайных переписках, хотя можно и это устроить… Прежде всего стандарт EXIF используется для сохранения и просмотра различных характеристик фотографии, ее параметров, показателей, сведений об авторстве и объекте фотосъемки, а также много еще какой информации. То есть метаданные нужны только с точки зрения информационной составляющей, а значит можно обойтись и без них.
Возможность сохранять и просматривать метаданные фотографий используют множество программ. Если используете ОС Windows, то скорее всего вы уже сталкивались с EXIF данными. Нажмите правой кнопкой мыши на любой фотографии, в появившемся меню выберите в самом низу пункт «Свойства» .
Далее, хоть у всех и разная версия Windows, но смысл одинаковый: найдите и нажмите на кнопку/вкладку «Подробно» . Откроется таблица, где будет отображена информация, разделенная на условные категории: «Описание», «Источник», «Изображение», «Камера», «Улучшенное фото», «Файл». Те сведения что отобразились во всей этой таблице — это и есть ни что иное как EXIF данные.
Опустите правый ползунок свойств и посмотрите как много всяких разных метаданных может быть у фотографии. Уверен в вашем примере большая часть строчек будут пусты, поскольку их нужно заполнять самостоятельно. А вот категория «Камера», возможно, будет заполнена — ее автоматически заполняет фотоаппарат или смартфон.
Это не исчерпывающий список возможных метаданных. Просто разработчики Windows посчитали, что такой таблицы будет достаточно, чтобы затронуть основные информационные аспекты фотографии. На самом деле таких данных может быть намного больше! Причем весь этот объем можно разделить на две группы: основные и дополнительные.
К основным параметрам я отношу те группы данных, что будут считываться в любой программе и устройстве, способном заглянуть в закрома фотографии. К таким данным нужно отнести: сведения о файле, описание, авторские права, информация о изображении, данные о камере и условиях снимка. Это означает, что какой бы вы программой не воспользовались, она всегда покажет вам как минимум эту информацию.
К дополнительным параметрам я отношу данные, с которыми будут работать только отдельно взятые программы. Например, фотошоп может создать вкладку «История» и вести в нее протокол редактирования фотографии. Сохраняйте фото, открывайте снова спустя время, хоть на другом компьютере, но обязательно через фотошоп, и вы можете всегда увидеть какие метаданные сохранены во вкладке «История». Но если попытаетесь заглянуть в EXIF с помощью, например, Gimp, то этой вкладки уже не обнаружите.
Этим пользуются многие серьезные программы. Например, с помощью EXIF данных строит систему фильтрации и сортировки фотографий, добавляя ключевые слова, создавая рубрики и логические обобщения. Это позволяет с легкостью отыскать нужные изображения среди десяток тысяч.
EXIF данные могут быть изменяемыми и неизменяемыми .
Изменяемые , в свою очередь, можно разделить еще на два подвида:
— редактируемые человеком , например, самому указать автора снимка, а позже удалить и написать новое имя;
— редактируемые программой , например, когда вы сохраняете фотографию в фотошопе, программа сама добавляет тег, что фото было изменено в фотошопе версии такой-то . Сами вы прописать или удалить этот тег не сможете (если только через специальный софт, но это уже другая история), а вот если пересохранить фотографию в фотошопе другой версии , то тег будет вновь изменен в части версии, например было CS5, а стало CS6.
Неизменямые данные записываются программами и устройствами без вашей воли и намертво остаются вместе с этой фотографией, например, разрешение картинки, формат файла, дата создания, данные камеры.
Зачем и как использовать EXIF данные?
- Прежде всего это очень удобная запись информации о снимке, ну не вести же в блокноте записи с какой выдержкой вы сделали тот или иной снимок! Все записано удобно в файлик, когда понадобится, открыли, посмотрели, вспомнили.
- Это доказательство вашего авторства снимка, если вы введете всю необходимую информацию о себе.
- На счет блокнота, я не далек от истины. Вы также можете открывать нужную фотографию и вписывать туда нужную для вас информацию. Оно будет там надежно храниться и никуда не денется. Но напоминаю, что просматривать ее придется, через ту же программу.
- Вам понравилось/не понравилось качество сделанного снимка? — Проанализируйте данные в категории «Камера». Там вы узнаете при каких условиях и настройках фотоаппарата был сделан этот снимок. Восхитились/нашли ошибку — получили бесценный опыт.
- Профессиональные обозреватели изображений, как, например, осуществляют сортировку и фильтрацию больших масс фотографий по EXIF метаданным.
- Передайте любовное послание человечку, или зашифруйте секретные данные и вывезите/перешлите их из страны =))
В-третьих , в интернете полно онлайн-сервисов по работе с EXIF-метаданными. Их преимущество в том, что не придется ничего устанавливать на компьютер. Один раз сделал эту операцию и забыл.
Из минусов отмечу скорость работы — она напрямую зависит от возможностей вашего интернет-тарифа.
Пример сайта для удаления EXIF онлайн — IMGonline.com.ua .
Заметили ошибку в тексте - выделите ее и нажмите Ctrl + Enter . Спасибо!
Вообще метаданные могут иметься у изображений различных форматов, однако я буду рассказывать на примере JPEG-а, т.к. работал именно с ним. Я думаю, для других форматов разница будет невелика.
Типы метаданных
Для начала разберемся, какие вообще типы метаданных могут быть в изображении. Все скорее всего это итак знают, но на всякий случай расскажу:
- EXIF (Exchangeable Image File Format) - стандарт хранения метаданных в изображении, который используется цифровыми камерами для сохранения информации о выдержке, диафрагме и других параметрах съемки. Метаданные в формате EXIF могут храниться в файлах форматов JPEG, TIFF и RIFF WAV. По стандарту из пользовательских описательных метаданных в EXIF может храниться только описание (тег Description) и комментарий (тег «User Comment»), но Windows Explorer использует также несколько дополнительных тегов (XPTitle, XPSubject, XPAuthor, XPComment, XPKeywords). Windows Explorer игнорирует тег XPTitle при наличии стандартного тега Description.
- IPTC (International Press Telecommunications Council) - название скорее организации, разработавшей стандарт. Сам стандарт метаданных называется IIM (Information Interchange Model). Самый старый из описываемых стандартов. В изначальной версии стандарта метаданные хранились так, что ПО, не знающее о существовании IPTC, не могло работать с файлами изображений, в которых были такие метаданные. Однако позже Adobe расширила стандарт, перенеся метаданные в блок APP13 JPEG-файла, что позволило ПО, не знающему о стандарте, успешно читать JPEG-файл, игнорируя неизвестные метаданные. В метаданных IPTC могут храниться такие описательные поля, как ObjectName (заголовок), Keywords (ключевые слова), Caption (описание, есть несколько вариаций тега).
- XMP (eXtensible Metadata Platform) - стандарт, разработанный Adobe. Метаданные хранятся в модели RDF, представленной в формате XML, позволяя включать любую необходимую информацию в файл изображения. Именно этот формат предпочитает использовать WIC (Windows Imaging Component) в Windows Vista/7.
Принципы работы с метаданными в WPF
Для работы с метаданными в WPF используются классы BitmapEncoder, BitmapDecoder, BitmapSource, BitmapFrame, BitmapMetadata, InPlaceMetadataWriter.
У классов BitmapEncoder и BitmapDecoder есть наследники, позволяющие работать с конкретными форматами изображений. В моем случае - JpegBitmapEncoder и JpegBitmapDecoder.
Класс InPlaceMetadataWriter используется для изменения метаданных прямо на месте, без перекодирования файла.
Данные читать и записывать можно двумя методами - либо с помощью функций GetQuery/SetQuery, оперирующих с иерархическими именами тегов метаданных, либо с помощью полей класса BitmapMetadata, позволяющих легко обращаться к метаданным.
При обращении к метаданным через поля класса BitmapMetadata, WIC пытается найти соответствующие поля в метаданных разных стандартов в следующем порядке: сначала XMP, затем IPTC и EXIF. При записи тегов через поля класса BitmapMetadata, WIC записывает их в формате XMP.
Чтение метаданных
Вот готовый пример функции, с помощью которой можно читать метаданные из файла:
- FileStream f = File .Open("test.jpg" , FileMode.Open);
- BitmapDecoder decoder = JpegBitmapDecoder.Create(f, BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default);
- BitmapMetadata metadata = (BitmapMetadata)decoder.Frames[ 0 ].Metadata;
- // Получаем заголовок через поле класса
- string title = metadata.Title;
- // Получаем заголовок из XMP
- string xmptitle = (string )metadata.GetQuery(@"/xmp/
dc:title" ); - // Получаем заголовок из EXIF
- string exiftitle = (string )metadata.GetQuery(@"/app1/ifd/{ushort=40091}" );
- // Получаем заголовок из IPTC
- string iptctitle = (string )metadata.GetQuery();
Тут все достаточно просто и прозрачно, поэтому сразу перейдем к записи.
Запись метаданных
- BitmapMetadata md = new BitmapMetadata ("jpg" );
- md.SetQuery(@"/xmp/
dc:title" , xmptitle); - md.SetQuery(@"/app1/ifd/{ushort=40091}" , exiftitle);
- md.SetQuery(@"/app13/irb/8bimiptc/iptc/object name" , iptctitle);
- BitmapFrame frame = BitmapFrame.Create(decoder.Frames[ 0 ], decoder.Frames[ 0 ].Thumbnail, md, decoder.Frames[ 0 ].ColorContexts);
- BitmapEncoder encoder = new JpegBitmapEncoder ();
- encoder.Frames.Add(frame);
- FileStream of = File .Open("test2.jpg" , FileMode.Create, FileAccess.Write);
- encoder.Save(of);
- of.Close();
Код идет, как продолжение фрагмента, читающего метаданные. Мы создаем копию оригинального файла, записав в его метаданные тайтл во всех трех форматах метаданных.
Редактирование метаданных «на месте»
До сих пор я рассказывал вобщем-то достаточно хорошо документированные и простые вещи, однако здесь все уже сложнее. Пример в официальной документации (MSDN) неверен и вообще противоположен по смыслу реальному положению вещей.
Для редактирования метаданных «на месте» необходимо создать объект класса InPlaceBitmapMetadataWriter:
После этого с ним можно работать, как с обычным BitmapMetadata, вызывая SetQuery для задания нужных метаданных.
Чтобы сохранить изменения, нужно вызвать метод TrySave(), пытающийся сохранить изменения в оригинальный поток. Попытка записи может быть успешной, а может и нет. При успешной попытке метод возвращает true, при ошибке - false.
Самая частая ошибка, которая может помешать записать изменения - в метаданных недостаточно свободного места. Как правило, все свежеснятые фотографии не содержат в метаданных достаточного места, поэтому для того, чтобы начать пользоваться редактированием метаданных на месте, следует один раз сделать копию файла, дополнив метаданные в нем специальными полями padding, оставляющими свободное место для последующих изменений. Для этого файл открывается, нужный кадр и его метаданные клонируются, и выполняется несколько запросов:
После этого кадр достаточно закодировать энкодером и записать в нужный поток, в результате чего в изображении появится свободное место для редактирования метаданных на месте впоследствии.
Значение паддинга в 2048 байт как правило достаточно. Если вам необходимо больше - можно указать большее значение.
Строки запросов
Я думаю у всех при изучении методов SetQuery/GetQuery возникает резонный вопрос - откуда брать все эти строки запросов, которые простыми и интуитивно понятными не назовешь?
После продолжительных поисков в MSDN нашелся соответствующий список . Здесь есть пожалуй все необходимые запросы. Отсутствующие можно в принципе составить по аналогии, примеров - предостаточно:)
Тонкости и подводные камни
- Версии WIC в Windows XP и Windows Vista могут глючить, если у вызывающего функцию JpegBitmapEncoder.Save() потока не указан атрибут STAThread (по умолчанию, все создаваемые в приложении потоки получают атрибут MTAThread, если не указано обратное).
- Версия WIC в Windows 7 сохраняет значения тега EXIF UserComment по умолчанию в Unicode, тогда как в Windows XP и Windows Vista - в кодировке текущего языка системы (CP1251 для русского). Формат записи UTF-8 параметров такой: само значение тега сохраняется не как строка, а как массив байт. Первые 7 байт - ASCII строка «UNICODE», после чего начинается Unicode-закодированная последовательность символов тега.
- К параметру BitmapCacheOptions следует относиться внимательно. Значение OnLoad кэширует все данные изображений в несжатом виде в RAM, поэтому если вы откроете штук 20 крупноформатных JPEG-ов с этой опцией - свободная память будет съедена очень быстро. Эта память не освобождается при удалении самих классов изображений (BitmapFrame, BitmapDecoder и пр.) и обработке их сборщиком мусора. Кроме того, для использования InPlaceBitmapMetadataWriter следует открывать изображение с BitmapCacheOptions = OnDemand или Default.
- В примере я открываю изображение с флагом IgnoreColorProfile, т.к. без него на некоторых изображениях BitmapDecoder выбрасывает исключение.
Заключение
В целом работа с метаданными с помощью WPF мне показалась достаточно сложной и запутанной. Практически все из описанных подводных камней стоили мне нескольких часов отладки и гугления, информации об этом нигде нет, а симптомы иногда очень странные. Официальная документация (MSDN) освещает этот вопрос плохо, а местами и вовсе неверна.
Надеюсь, что эта собранная информация поможет тем, кому понадобится работать с метаданными через WPF, и сэкономит им несколько часов времени:)
P.S. Буду рад увидеть в комментариях замечания (если я где-то ошибся) и описания подводных камней, с которыми я не встречался или забыл упомянуть.
P.P.S. Стоит ли продолжать писать о WPF, или я пишу давно известные вещи?