Статьи

Архивирование изображений с открытым исходным кодом: Exif, IPTC, XMP и все такое

В связи с этим взлом начал серьезно рассматривать имеющиеся стандарты и инструменты с открытым исходным кодом для добавления метаданных к изображениям в контексте создания архивов цифровой фотографии. С дальнейшим побуждением от чтения этого (Эй! MS принимает чей-то стандарт!), Сбрасывая некоторые заметки …

Фотоархивирование: золотое правило

Храните метаданные в изображении .

На самом деле здесь следует быть более точным в отношении метаданных слова — по сути, существует три важных типа метаданных, когда речь идет о цифровых изображениях, когда речь идет о том, кто их создал и где они хранятся.

Первый; материал, который ваша цифровая камера прикрепляет к изображению при съемке (например, производитель фотокамеры, время съемки, экспозиция и т. д.), секунда; метаданные, которые вы вручную добавляете к изображению, обычно во время загрузки изображений с камеры на компьютер (например, где была сделана фотография, описание, ключевые слова, имя фотографа и т. д.) и третье; «Группировка метаданных» — как коллекция изображений связана друг с другом (например, все они были частью одной фотосессии или все семейные фотографии). Для целей этого обсуждения первые два типа метаданных можно рассматривать как одно и то же, и именно эту информацию вы хотите сохранить в изображении .

Третий тип — «группирующая» информация является «относительной» и практически может работать хорошо только в том случае, если она хранится извне из изображений. Это может быть «легковесным», как дерево каталогов в вашей файловой системе с именами на основе временных меток, в которых вы храните ваши изображения, но инструменты архивирования изображений могут предлагать дополнительные возможности в этой области. Важно, если вы хотите сгруппировать коллекцию изображений под заголовком типа «семья», вам также необходимо сохранить ключевое слово «семья» в изображении. В таком случае это может быть инструмент архивации изображений, который может автоматически создавать группы из ваших ключевых слов.

Но вам нужны первые два типа метаданных в изображении, так что если вы переключите инструменты архивирования, перенесете ваши изображения в другую систему или забудете сделать резервную копию архивной базы данных, но запомните изображения, они не будут потеряны. Достойный инструмент архивирования, вероятно, сгенерирует свою собственную базу данных из этих встроенных метаданных, чтобы сделать поиск и т. Д. Эффективными, но окончательным авторитетом должно быть само изображение.

Стандарты метаданных встроенного изображения

Следующий вопрос — как данные хранятся на изображении? Форматы файлов, такие как JPEG , RAW и TIFF , обычно используемые в цифровой фотографии / обработке, позволяют сохранять дополнительные метаданные в файле изображения.

Итак, вот представление «избегайте слишком большого количества деталей»: здесь есть три важных встроенных формата метаданных — Exif , IPTC и XMP . Exif используется большинством цифровых камер для прикрепления такой информации, как экспозиция в том месте, где вы делаете снимок, и доступны инструменты для добавления информации вручную (или автоматически), такие как геокодирование . IPTC «расширяет» Exif, предоставляя целую загрузку более именованных «тегов» для метаданных. И то и другое хрупко с технической точки зрения (легко уничтожить / испортить) и проблематично с точки зрения расширения (если нет названного «тега» для метаданных, которые вы хотите сохранить, вам не повезло). Между тем, XMP, работа Adobe, является «святым Граалем», обеспечивающим основные качества XML / RDF / Dublin для хранения метаданных. Это просто не очень хорошо поддерживается, но начинает получать значительное признание. И, конечно же, у нашего друга IE есть свое мнение о XMP

На практике вам нужно уметь работать со всеми тремя форматами для эффективного архивирования фотографий.

Приложения для архивации изображений

Существует множество инструментов для архивации изображений для любых операционных систем. Хороший вариант позволит вам вручную вводить дополнительные метаданные об изображении (например, ключевые слова, такие как «семья», «собака» и т. Д.), Но, согласно опросу, большинство хранит эти данные отдельно от изображения, в некотором роде. база данных. Что касается Ubuntu, GThumb делает именно это — сохраняет метаданные, предоставленные пользователем, извне из изображения (если я правильно помню, оно находится в ~/.gnome2/gthumb

Существует множество причин, по которым я считаю это в корне неправильным, что становится очевидным в тот момент, когда изображение покидает вашу файловую систему (или, возможно, даже меняет каталог / имя файла), плюс тот факт, что в пространстве для архивации изображений нет «явного победителя» — есть хороший вероятность того, что вы переключите инструмент более одного раза. Итог: хранение метаданных отдельно от изображения, на которое они ссылаются, просто не способ сделать это.

В пространстве с открытым исходным кодом / Linux есть несколько претендентов, которые делают это «правильно», а именно F-spot (C # / Mono) и jbrout (python / wxpython). Оба способны хранить метаданные в изображении, но есть ограничения, например, jbrout не знает о XMP. Некоторые полезные блоги (и комментарии) для чтения: как управлять EXIF, метаданные XMP в linux gnome kde , управление фотографиями и организация фотографий в Linux .

Архивирование изображений сделано правильно

Напротив, модель приложения IMO, для того, чтобы сделать это правильно (к сожалению, только для Win32), но бесплатное использование, является PixVue .

Для начала, вместо того, чтобы быть монолитным приложением, оно добавляет кучу расширений пространства имен оболочки Windows, что означает, что вы можете работать с изображениями в проводнике Windows — например, щелкнуть правой кнопкой мыши и «аннотировать» метаданные.

Как я понимаю, «цифровой рабочий процесс», в общем, все о процедурах — вам нужны «ориентированные на процессы» приложения, которые вписываются в вашу процедуру, а не монолитные оконные представления ваших изображений, которые определяют вашу работу. PixVue получает это право, убираясь с дороги и, следовательно, мое желание расширить Наутилус .

PixVue также хранит почти все метаданные в изображении, понимая EXIF, IPTC и XMP. Исключением являются метаданные «группировки», которые предоставляют нечто, называемое «галереями», которые представляют собой иерархию виртуальных каталогов — в проводнике вы можете перетаскивать изображения в галерею (или галереи) для их организации, но это только «символические ссылки». ”К исходным файлам в вашей файловой системе. Вы также можете экспортировать свои структуры галереи в формате XML, чтобы обеспечить как минимум шанс переносимости.

Кроме того, предоставляемые им «шаблоны» помогают сделать метаданные для большой коллекции изображений максимально быстрыми и безболезненными.

Наконец, он обладает отличными возможностями поиска (через представление галереи), а также «интегрируется» с (заполняет индексы) поиском Windows и рабочим столом Google.

Единственным недостатком PixVue является то, что источник недоступен и, похоже , нет API (он регистрирует некоторые COM-компоненты, но из-за быстрого сканирования они не позволяют управлять им, скажем, с помощью Скрипт Python), поэтому, если вы хотите расширить его для интеграции с каким-либо инструментом геокодирования, вам не повезло.

Инструменты метаданных изображений с открытым исходным кодом

Итак, учитывая не совсем идеальную ситуацию для приложений архивации изображений с открытым исходным кодом, что доступно в виде библиотек, так что вы можете взломать свои собственные?

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

Ситуация особенно остра, когда дело доходит до Python, которого крайне не хватает — там есть несколько «читателей» и случайный писатель (хотя и не пишущий по XMP), но ничего по-настоящему завершенного. Это плохие новости для jbrout и еще больше плохих новостей для Python на телефонах Series 60 , где возможность пометить свои фотографии, пока вы сидите в поезде, станет приложением killr.

Однако есть исключения: № 1 — exiftool Фила Харви (Perl — доступен через CPAN ). ExifTool не просто хорош — он превосходен. В основном все это есть — поддержка EXIF, IPTC и XMP (чтение / запись), поддержка расширений производителя и общий словарь имен тегов, которые в некоторой степени не зависят от формата метаданных. Единственным недостатком является то, что, кажется, нет (поправьте меня, если не так) интерфейс GUI для Linux, который предоставляет все функциональные возможности Exiftool — вы либо говорите из командной строки, либо пишете свои собственные Perl-скрипты.

Еще одно заслуживающее внимания исключение Evan Hunter’s PHP JPEG Metadata Toolkit , которое имеет поддержку EXIF, IPTC и XMP и осведомленность о некоторых особенностях производителя. API также довольно прост.

Конечно, есть много других вещей, которые предлагают часть изображения, например, jempbox (Java), но YMMV.

В любом случае — надеюсь, это сэкономит кому-то время на исследования.