Работаем с метаданными в файлах цифровых фотографий.
  Часть 2 >>


 

Коротко о главном.

Цифровой фотографией в наше время уже, конечно, никого не удивишь. Ее доступность и удобство стали для многих из нас решающими аргументами при переходе с пленочных технологий на цифровые или же просто позволили принять решение "стартануть" сразу с приглянувшегося цифровичка, а не с пленочной мыльницы. Конечная дешевизна каждого снимка неизбежно приводит к увеличению количества фотографий. Ну зачем, скажите на милость, экономить и делать 2 снимка одного сюжета, если можно нащелкать двадцать или тридцать, а по карману это практически не ударит? Но многим из нас этого уже мало и хочется не просто иметь на винчестерах и DVD-R свалку любимых фотоснимков, но и через полгода, год, пять лет и т.д. вспомнить, с какими параметрами был снят тот или иной кадр, чем руководствовались мы, когда повышали ISO или уменьшали диафрагму, почему на снимке проявился тот или иной эффект, какие ошибки мы допустили при установке баланса белого. Я не знаю, кто конкретно из японцев придумал стандарт EXIF 2.2. Я знаю только, что японцы - великие люди. Без них мир был бы скучен и сер.

С самого первого дня, еще тогда, когда я делал свои первые пробные кадры, у меня вошло в привычку нажимать "Properties" в любимой ACDSee и смотреть вкладку "Metadata". Впоследствии, я сменил несколько просмотрщиков, но ни один из них не мог работать с Exif так, как мне бы хотелось, наверное, по одной простой причине - просмотрщики должны уметь показывать само фото, а функции работы с метаданными у них всего лишь полезные программные дополнения, не более. И вот, у меня родилась идея написать нужную мне программу самому, и я на пару недель плотно засел за изучение документации. Человек я по природе своей ленивый, и именно поэтому моя `ShowExif ;-)` изначально "затачивалась" под аппараты того производителя, которые меня более всего интересовали, а именно под аппараты компании Canon. Тем не менее, программа работает и с файлами JPEG других производителей.

Теперь немного о самой программе. Разумеется, она бесплатна. Разумеется, она запускается только из-под Windows. И, разумеется, она имеет статус `beta`. Разумеется, программа не имеет инсталлятора, чтобы лишний раз не нервировать пользователя. Разумеется, она использует старую добрую систему ini-файлов, и потому в ней нет ни одной процедуры, которая шарилась бы по вашему и без того захламленному реестру. Разумеется, ini-файлы хранятся в том же каталоге, что и сама программа, а не в каких-нибудь системных папках Windows, откуда их нужно было бы выуживать, если возникла необходимость. И, разумеется, удаление программы, в случае надобности, не составляет труда, просто удаляете директорию, где она живет, и готово. Разумеется, программа не перегружена графикой и скинами. Разумеется, в программе есть русский интерфейс. И, разумеется, все права на программу принадлежат ее автору, т.е. мне, и это, согласитесь, логично.

Теперь немного о самой сути стандарта Exif. Не бойтесь, грозными формулами и многостраничными структурами я вас утомлять не стану. Просто скажу пару слов о том, как все это примерно работает. Поток данных формата JPEG кодируется программой-создателем и подлежит последующему декодированию программой-просмотрщиком или программой-редактором. Нас это сейчас особо не интересует, поскольку сами данные JPEG не имеют непосредственного отношения к EXIF. Повторюсь, я не знаю, кому конкретно пришла в голову мысль создать стандарт, позволяющий "прицепить" к блоку данных JPEG блоки метаданных, но мысль эта, очевидно, весьма здравая. И идея эта явно заслуживает уважения, хотя реализация, на мой взгляд, все же хромает. В общих чертах, очень упрощенно говоря, файл JPEG с метаданными выглядит так:


Начало файла

Основной раздел Exif

Дополнительный раздел Маркер потока JPEG Поток JPEG Конец файла


Повторюсь, все это очень упрощенно, излагаю только саму поверхностную суть, в действительности тут намного больше нюансов. Начинается JPEG всегда одинаково. С т.н. маркера начала изображения. Далее идут секции метаданных, тоже разделенные маркерами. Затем идет маркер начала потока JPEG. Затем сами данные JPEG. А потом маркер конца файла. Основная задача просмотрщиков - декодирование данных JPEG потока, в то время как основная задача "ShowExif ;-)" - декодирование разделов EXIF, которых, кстати говоря, вполне может быть больше, чем показано на схеме, то есть, больше, чем два. Разделы Exif представляют собой массивы "Тэг - значение". Количество тэгов ограничено разумным числом. Так называемый "Основной раздел Exif" содержит описанные стандартом тэги, на присутствии которых настаивает спецификация, а каждый из этих тэгов имеет свое значение, причем, некоторые из этих значений описаны в спецификации, как фиксированные комбинации (массивы), а некоторые могут быть произвольными. Естественно, что многим производителям стало мало таких жестких рамок, и в дополнение к основному разделу EXIF в файл JPEG их камеры пишут так называемый "MakerNote", раздел, расширяющий объем информации о съемке. Для тэгов в этом разделе жестких рекомендаций со стороны стандарта нет, и каждый из производителей вводит свой "микростандарт", который на деле является комбинацией нужных тэгов, причем, порядок следования этих тэгов и их расшифровку производители не разглашают. Т.е. ситуация такая: штатные программы производителей MakerNote без проблем расшифровывают, а остальные разработчики вынуждены до всего доходить сами, потому как официальной документации от производителей нет. Все. Как и обещал - самую суть, без утомительного углубления в детали.



Внешний вид.

Последнюю версию программы "ShowExif ;-)" всегда можно загрузить по этой ссылке. Установки, как уже было сказано, она не требует. Просто помещаете программу в отдельный каталог, и можно запускать.


Основное окно программы имеет навигацию в стиле "Проводника" Windows, вверху имеется панель с меню для основных действий, есть контекстное меню, которое вызывается при щелчке правой кнопки мыши на списке тэгов, а вверху окна расположено стандартное меню, в пунктах которого дублируются многие команды контекстного меню.



Работает программа с файлами JPEG и файлами RAW производителя Canon, имеющими расширение CRW, при условии наличия вспомогательного файла с расширением THM, который пишется к каждому RAW файлу аппаратами этого бренда. Фильтр на файлы выбирается в главной панели пунктом "Фильтр файлов", либо настраивается в окне настроек программы, которое вызывается при клике на пункте "Настроить фильтр":





Затем щелкаем на нужный файл, и, если в нем присутствует EXIF, то производится его расшифровка, и данные выводятся в список правого окна.






Работа с использованием фильтров.


Самое первое ощущение, которое возникает при просмотре данных, что информация слишком избыточна. Многие тэги могут ведь и не иметь для кого-то значения, а из-за объема данных трудно выделить нужную информацию. Для решения этой проблемы в программе ShowExif имеются фильтры. Чтобы начать использовать эти фильтры, разумеется, сначала их нужно настроить. Окно настройки фильтра вызывается по горячей клавише CTRL+F или ALT+F, при этом курсор программы должен стоять на любом файле, имеющем метаданные. В списке справа показаны все тэги выбранного файла, слева список непосредственно фильтра:


Добавление тэгов в фильтр производится простым перетаскиванием нужных тэгов. Удаление тэга из фильтра производится по нажатию клавиши DELETE или перетаскиванием тэга за пределы списка. При желании список можно отсортировать, устанавливая соответствующую галку. Применить фильтр можно по горячей клавише ALT+S, либо нажать на кнопку "Фильтр даных" главной панели. Посмотрите, как выглядят на деле отфильтрованные данные. Слева показан полный список тэгов, справа список, к которому применен настроенный фильтр:

 


Конечно, одного фильтра на файлы всех производителей может и не хватить. С этой целью была создана возможность использовать до пяти фильтров, переключаясь между ними, когда в этом есть необходимость. Переключение между фильтрами производится по горячей клавише ALT+'...' (где '...' номер фильтра и может принимать значение от 1 до 5), либо выбором нужного пункта в контекстном меню или в главной панели:


Переименовать названия фильтров в меню можно, отредактировав файл `Language.ini`, либо вручную, либо через пункт главного меню Файл->Изменить Language.ini. Все фильтры программы хранятся в файле `filters.ini`, который находится в директории программы. Состояние текущего фильтра все время отображается в статусной строке "ShowExif ;-)".




Выделение, копирование и сохранение тэгов.



Простейшие операции с тэгами производятся с помощью пунктов меню "Копировать тэги в буфер", "Копировать весь Exif в буфер", "Сохранить тэги в файл" и "Сохранить весь Exif в файл".



Все эти операции применяются либо к выбранным тэгам, либо ко всему списку тэгов полностью. Выделить тэги можно щелкая по ним, удерживая клавишу CTRL, выделить группу тэгов можно щелкая по нужному первому тэгу и по нужному последнему, удерживая клавишу SHIFT. С помощью соответствующих пунктов меню можно инвентировать выделение или его отменить:

 




Если при выборе пункта меню "Копировать тэги в буфер" удерживать клавишу CTRL, то так же в буфер будут скопированы и маркеры программы, позволяющие при вставке скопированных тэгов в какой-либо текст отделить их от текста:


========== ShowExif copy process (ver.0.05-50beta) ==========

Make: OLYMPUS CORPORATION
Model: C8080WZ
Exposure Time: 1/640 sec
FNumber: F3,5
Date Time Original: 2004:07:02 17:13:16
Metering Mode: MultiSegment
Flash: Off, surpressed
Focal Length: 35,60 mm
Sharpness: Hard
CCD Size: 2/3 ''
Focal Lengthin35mm Film: 140,00 mm

========== ShowExif copy process (ver.0.05-50beta) ==========

 

Если при выборе пункта меню "Копировать тэги в буфер" удерживать клавишу SHIFT, то копируемые тэги тут же будут открыты в новом файле блокнота Windows:


 

Если при выборе пункта меню "Копировать тэги в буфер" удерживать клавишу BACKSPACE, то в буфер будут скопированы лишь значения тэгов, без названий самих тэгов:


========== ShowExif copy process (ver.0.05-50beta) ==========

OLYMPUS CORPORATION
C8080WZ
1/640 sec
F3,5
2004:07:02 17:13:16
MultiSegment
Off, surpressed
35,60 mm
Hard
2/3 ''
140,00 mm

========== ShowExif copy process (ver.0.05-50beta) ==========



Выбор пункта "Сохранить весь EXIF в файл" вызывает стандартный диалог сохранения файла на диск. Файл сохраняется как текстовый, при этом имя по умолчанию у него включает название исходного файла с метаданными:






Раздел PhotoShop CS.

Конвертор RAW файлов в Photoshop CS является одним из самых мощных и популярных в мире. Сам фотошоп при редактированнии JPEG частенько сохраняет первоначальные метаданные в файлах не полностью, в частности, "срезает" дополнительные разделы производителей, хотя основной раздел оставляет. В файлы, полученные путем конвертирования из RAW средствами внутреннего конвертора, фотошоп пишет еще один дополнительный раздел со значениями параметров конвертации. ShowExif может декодировать и этот раздел, показывая пользователю данные, при условии, что опция "Читать раздел Photosop CS" отмечена в настройках программы. Это может быть очень полезно во время изучения давно сконвертированного из RAW уникального кадра или при сравнении кадров, сконвертированных другими людьми.





Также переключение этой опции возможно по горячей клавише ALT+P. Одновременно с этим разделом выводятся основные данные о съемке, взгляните на пример ниже:


Файл, сконвертированный с этими параметрами и сохраненный как JPEG, "ShowExif ;-)" обрабатывает таким образом:





При выключенной опции "Читать раздел Photoshop CS" обработка метаданных производится в обычном режиме. Инструменты, позволяющие обойти склонность фотошопа к порче разделов MakerNote и раздела `Thumbnail`, будут рассмотрены в следующей части. Да, я помню, что про раздел `Thumbnail` еще ничего не говорил, но это и есть один из тех самых нюансов, которые я опустил для упрощения в описании устройства JPEG файла в самом начале статьи.



  Часть 2 >>
HotLog бв вЁбвЁЄ