Метаданные IPTC
Простой пример добавления IPTC в фото. Что такое IPTC? Это International Press Telecommunications Council (международный совет по прессе и телекоммуникациям) – это метаданные, которые добавляются в фотографию, они связаны с авторством. IPTC разработал стандарт метаданных для цифровых изображений, который позволяет хранить подробную различную информацию, а не как Exif который нацелен на техническую информацию. В метаданных IPTC могут храниться такие описательные поля, как ObjectName (заголовок), Keywords (ключевые слова), Caption (описание, есть несколько вариаций тега). IPTC информацию поддерживают фотобанки, поисковики и т.д. Данные метаданные сохраняются не во всех форматах, а например в JPEG или TIFF. Чтобы легко и быстро добалять метаданные, можно создать экшен. Вызываем выпадающий спикок в панели Операции и выбираем пункт: Новая операция.
В окне Новая операция, вводим имя экшена и нажимаем на кнопку: Записать.
При открытом фото, выполняем команду: Файл > Сведения о файле. (Alt+Ctrl+Shift+I). В закладке IPTC заполняем поля: Контакт IPTS и нажимаем на кнопку ОК.
Останавливаем запись экшена нажав на соответствующую кнопку.
Теперь при открытии любого фото, для добавления IPTC метаданных, достаточно воспроизвести экшен.
Запускаем программу Adobe Bridge CS6 (входящую в состав Adobe Photoshop CS6) и смотрим IPTC метаданные сделанные в фотошопе, программа их корректно читает:
Работа с метаданными изображений в WPF
Вообще метаданные могут иметься у изображений различных форматов, однако я буду рассказывать на примере JPEG-а, т.к. работал именно с ним. Я думаю, для других форматов разница будет невелика.
Типы метаданных
Принципы работы с метаданными в WPF
Для работы с метаданными в WPF используются классы BitmapEncoder, BitmapDecoder, BitmapSource, BitmapFrame, BitmapMetadata, InPlaceMetadataWriter.
У классов BitmapEncoder и BitmapDecoder есть наследники, позволяющие работать с конкретными форматами изображений. В моем случае — JpegBitmapEncoder и JpegBitmapDecoder.
Класс InPlaceMetadataWriter используется для изменения метаданных прямо на месте, без перекодирования файла.
Данные читать и записывать можно двумя методами — либо с помощью функций GetQuery/SetQuery, оперирующих с иерархическими именами тегов метаданных, либо с помощью полей класса BitmapMetadata, позволяющих легко обращаться к метаданным.
При обращении к метаданным через поля класса BitmapMetadata, WIC пытается найти соответствующие поля в метаданных разных стандартов в следующем порядке: сначала XMP, затем IPTC и EXIF. При записи тегов через поля класса BitmapMetadata, WIC записывает их в формате XMP.
Чтение метаданных
Вот готовый пример функции, с помощью которой можно читать метаданные из файла:
Тут все достаточно просто и прозрачно, поэтому сразу перейдем к записи.
Запись метаданных
Код идет, как продолжение фрагмента, читающего метаданные. Мы создаем копию оригинального файла, записав в его метаданные тайтл во всех трех форматах метаданных.
Редактирование метаданных «на месте»
До сих пор я рассказывал вобщем-то достаточно хорошо документированные и простые вещи, однако здесь все уже сложнее. Пример в официальной документации (MSDN) неверен и вообще противоположен по смыслу реальному положению вещей.
Для редактирования метаданных «на месте» необходимо создать объект класса InPlaceBitmapMetadataWriter:
После этого с ним можно работать, как с обычным BitmapMetadata, вызывая SetQuery для задания нужных метаданных.
Чтобы сохранить изменения, нужно вызвать метод TrySave(), пытающийся сохранить изменения в оригинальный поток. Попытка записи может быть успешной, а может и нет. При успешной попытке метод возвращает true, при ошибке — false.
Самая частая ошибка, которая может помешать записать изменения — в метаданных недостаточно свободного места. Как правило, все свежеснятые фотографии не содержат в метаданных достаточного места, поэтому для того, чтобы начать пользоваться редактированием метаданных на месте, следует один раз сделать копию файла, дополнив метаданные в нем специальными полями padding, оставляющими свободное место для последующих изменений. Для этого файл открывается, нужный кадр и его метаданные клонируются, и выполняется несколько запросов:
После этого кадр достаточно закодировать энкодером и записать в нужный поток, в результате чего в изображении появится свободное место для редактирования метаданных на месте впоследствии.
Значение паддинга в 2048 байт как правило достаточно. Если вам необходимо больше — можно указать большее значение.
Строки запросов
Я думаю у всех при изучении методов SetQuery/GetQuery возникает резонный вопрос — откуда брать все эти строки запросов, которые простыми и интуитивно понятными не назовешь?
После продолжительных поисков в MSDN нашелся соответствующий список. Здесь есть пожалуй все необходимые запросы. Отсутствующие можно в принципе составить по аналогии, примеров — предостаточно 🙂
Тонкости и подводные камни
Заключение
В целом работа с метаданными с помощью WPF мне показалась достаточно сложной и запутанной. Практически все из описанных подводных камней стоили мне нескольких часов отладки и гугления, информации об этом нигде нет, а симптомы иногда очень странные. Официальная документация (MSDN) освещает этот вопрос плохо, а местами и вовсе неверна.
Надеюсь, что эта собранная информация поможет тем, кому понадобится работать с метаданными через WPF, и сэкономит им несколько часов времени 🙂
Используем IPTC для ускорения работы на фотобанках
Каждый, кто уже начал работать с фотобанками и достиг определенных объемов работы, сталкивается с вопросом, как же ускорить процесс загрузки и аттрибутации изображений на фотобанках? Особенно этот вопрос становится актуальным, когда Вы работаете с большим количеством фотобанков одновременно. Понятно, что если Вы зарабатываете как эксклюзивный автор на отдельно взятом фотобанке, то вопрос оптимизации времени для Вас, полагаю, не настолько критичен. Одним из вариантов для сокращения времени загрузки фотографий и векторных иллюстраций на фотобанки для продажи является использование IPTC информации при сохранении файла изображения. Использование IPTC данных в файле изображения дает возможность автору значительно уменьшить затраты драгоценного времени.
Для многих начинающих авторов фотобанков, возможно, термин IPTC прозвучит непонятно. По сути, IPTC данные представляют собой информацию, которая добавляется в фотографию или иллюстрацию и может быть выделена из нее специальными программными средствами. Практически все современные фотокамеры уже обладают такой функциональностью для внесения IPTC данных в файл с изображением. Обычно фотокамеры сохраняют в файле изображения информацию о марке и модели фотокамеры, а также информацию о фотоснимке. Хотя, вполне понятно, что фототехника еще не настолько функциональна, чтобы самостоятельно атрибутировать фотографию, присвоив ей название, ключевые слова, описание. С векторными иллюстрациями ситуация аналогична, так как графические редакторы самостоятельно также не атрибутируют иллюстрации. Но, при финальном сохранении фотографии или вектора Вы сможете указать в IPTC данных файла все, что требуется.
Практически все лучшие фотобанки сети нормально считывают IPTC данные из файла изображения и автоматически вносят эту информацию в соответствующие поля для ключевых слов, описания, названия изображения. Согласитесь, что так будет работать значительно проще и быстрее. Для добавления IPTC информации в свои фотографии и иллюстрации Вы сможете использовать Adobe Photoshop, Adobe Illustrator, Apple iPhoto, XnView или любой графический редактор с возможностью редактирования изображений и добавления для дальнейшего сохранения IPTC информации. К примеру, для внесения IPTC информации в фотографию или иллюстрацию с использованием графических редакторов семейства Adobe просто откройте файл с изображением, зайдите во вкладку меню Файл (File), после этого перейдите кликом мыши на окно Сведения о файле (File Info…). В этом окне Вы можете ввести всю требуемую информацию: Name, Keywods, Description. После этого сохраните отредактированный файл.
Да, если Вы еще не поняли, как это Вам может помочь, то я расшифрую. К примеру, когда Вы загружаете фотографии и иллюстрации сразу на 5-10 фотобанков, то использование IPTC данных в Ваших изображениях позволяет Вам сократить необходимость неоднократного дублирования требуемых данных (Name(название фотографии и иллюстрации), Keywods(ключевые слова), Description(описание)) до одного раза. Понятно, что все равно надо будет выбирать вручную категории для Вашего изображения, но все-таки это будет гораздо проще, чем могло бы без использования IPTC информации в Ваших изображениях. Кстати, а также использование IPTC информации очень помогает в тех случаях, когда начинает работу новый фотобанк и Вы решаете загрузить на него все свое портфолио уже имеющихся изображений. Представьте, что Вам надо будет описать 2000-3000 фотографий и иллюстраций? А так подгрузили, проставили категории и вперед, слушать звон монет от продажи фотографий и иллюстраций!
Одним из вариантов для сокращения времени загрузки фотографий и векторных иллюстраций на фотобанки для продажи является использование IPTC информации при сохранении файла изображения. Использование IPTC данных в файле изображения дает возможность автору значительно уменьшить затраты времени.
Статья доступна для ознакомления в следующих рубриках: 123RF, Depositphotos, Dreamstime, Fotolia, Istockphoto, Shutterstock, О микростоках
Если Вам понравилась моя статья, то Вы можете получать новые материалы по RSS или подписаться для получения обновлений блога на e-mail :
Поиск файлов по тэгам в XMP / IPTC и операции с найденным
Сначала может показаться, что пост о «ещё одном медиаплеере», и вот уже паникующий хабровчанин бежит с выпученными глазами прочь, кидаясь минусами в людей, животных и программистов. Ну, в общем и целом, да, пост примерно об этом. Но. Есть, на мой взгляд, одно весомое Но, о котором ниже.

Все любят фотографировать котиков. Да. Утверждаю. Некоторые даже составляют с ними фотоальбомы. Ещё кое-кто даже заморачивается тэггированием этих фоточек. А совсем уже упоротые один-два раза в жизни по этим тэгам эти фоточки ищут.
Мой случай совсем плохой. Таки да, я очень люблю фотографировать, и далеко не только котиков. Посему, фотографий, причём, уже только отобранных, на данный момент скопилось около 15 000. Ко всему этому, я конченый перфекционист-педант и люблю, когда всё (ну, почти всё) находится в порядке. Я тэггирую фотографии, ищу их по этим тэгам и не прочь составить несколько тематических альбомов.
Есть множество специальных программ, работающих с метаданными. Начиная с трушной exiv2 и заканчивая различными просмотрщиками и огромными комбайнами с преферансом и комбайнёрами. Какие-то программы просто показывают котиков, какие-то позволяют лепить на этих котиков тэги, какие-то — искать этих котиков по этим тэгам, какие-то — также эти тэги редактировать, а какие-то организуют котиков в альбомчики.
Но. Я не нашёл (хотя, возможно, плохо искал) ни одного решения, которое не только предоставляло бы все эти возможности, но и логически их связывало. Можно найти фотки по тэгам, но нельзя пакетно эти тэги редактировать по тем или иным критериям. Или можно добавить список тэгов фоткам в каком-нибудь каталоге, но всем сразу и безапелляционно. Есть куча «органайзеров», но как правило, со своим собственным велосипедным способом организации фотографий, а не хоть сколь-нибудь универсальным и штатным. Не говоря уже о связанных критериях отбора.
Пилим
В общем, в этом зоопарке мне стало грустно, и я решил наваять что-то своё. С комбайнёрами, естественно. Сначала на своём любимом Perl-е. Ну, вот есть у меня такой пунктик. Но, повторюсь, только сначала. Потом я — та-дам! — переписал прогу на C. Но обо всём подробнее ниже, а пока — сразу ссылки:
Что получилось, и как с этим жить
Итак, что можно делать с этими несчастными тэгами? В общем-то, добавлять, удалять, менять и сравнивать (поиск по сути и есть сравнение с шаблоном). Причём, сравнение может быть довольно сложным.
Поиск
Многие программы позволяют искать файлы по тэгам с логическими И, ИЛИ и НЕ. Но, опять же, может плохо искал, но обычно поиск возможен либо только с И, либо только с ИЛИ, либо только с НЕ. А у меня вот почему-то появляется иногда навязчивая идея найти все фотографии с человеками на природе, кои учиняют либо трэш, либо угар, но при этом не в рамках фестиваля. Итого, условие: (человеки И природа) И (трэш ИЛИ угар) И (НЕ фестиваль). Поля ввода в программу добавлены, функционал реализован, фотографии находятся корректно.
Результаты поиска
Кстати, находятся «куда»? Программа, найдя фотографии, удовлетворяющие условиям, создаёт в каталоге, в котором запущена, временный подкаталог со случайным абракадабрным именем, куда и складирует символические ссылки на найденные фотки, с абракадабрными же именами. Потом открывается просмотрщик, которому передаётся в качестве аргумента путь к этому подкаталогу. Какой просмотрщик? Я люблю “Geeqie”, так что по умолчанию открывается он. Но в ключе -l программы можно указать любой другой, либо “ no ”, означающее, что не надо вообще ничего открывать. После длительного любования найденными фотошедеврами и закрытия просмотрщика временный подкаталог со ссылками удаляется (если не указано обратное, об этом ниже).
Редактирование
Отлично. А что насчёт добавления, удаления и замены? Так называемого типичного случая редактирования тэгов. С самим редактированием проблем нет; в программу добавлены поля ввода «Добавить тэги», «Удалить тэги» и «Заменить тэги». Но вот тэги чего редактировать? Не напрашивается ли идея о возможности редактировать тэги файлов, найденных, собственно, по своим тэгам?
Итак, найдя кучу фотографий человеков на природе, кои учиняют либо трэш, либо угар, но при этом не в рамках фестиваля, я с ужасом обнаружил в этой куче множество фотографий с собой любимым. Причём, учиняющим, как правило, трэш, а не угар. Какие могут быть решения проблемы? Первое — не учинять трэша и угара. Не пойдёт. Второе — подредактировать тэги.
Итак, задаём новый поиск по фотографиям с теми же самыми условиями, но с добавленным в поле «И» тэгом «я любимый». Теперь, если нажать на кнопочку «Начать», найдётся часть (причём, к сожалению, бо́льшая) всего того найденного ранее безобразия. Но перед этим в поле «Добавить тэги» введём два тэга: [опоён во сне интервентами, не показывать жене] (вообще, в полях тэги разделяются запятыми, поскольку в самих тэгах вполне могут присутствовать пробелы). Также, в поле «Удалить тэги» введём [человеки], а в поле «Заменить тэги» — [трэш, забавы, угар, праздник] (в поле «Заменить тэги» они вводятся попарно: «трэш» заменится на «забавы», а «угар» на «праздник»).
Всё. Жмакаем кнопочку «Начать», и фотографии приобретают ну хоть какие-то оправдательно-смягчительные признаки. Ну и полезные. Можно потом составлять семейные альбомы, отбирая при поиске фотки с тэгом «не показывать жене», введённым в поле «И».
Организация
И вот, кстати, об альбомах. По сути, сам принцип составления альбомов у нас уже есть — логический поиск по тэгам. Осталось реализовать, собственно, организацию найденных фоток в «альбомы». И тут я подумал: я люблю велосипеды, но мотоциклы времён второй мировой люблю больше. Не проще ли просто сохранять в определённые каталоги символические ссылки на найденные фотографии? Проще. Что и сделано.
Для сохранения ссылок надо поставить галку «Сохранять ссылки в:», выбрать рядом нужный каталог и по желанию поставить галку «Сохранять имена». С сохранением имён нужно быть осторожным. Если вы уверены, что все имена файлов фотографий у вас уникальные (например, по времени съёмки, как у меня), то это имеет смысл — символические ссылки будут иметь те же имена, что и оригинальные файлы. А вот, если имена файлов могут повторяться, то, очевидно, галку ставить не стоит.
После отрабатывания программы, любования фотками в просмотрщике и его закрытия, каталог с символьными ссылками не удаляется, а остаётся для потомков.
Дерево тэгов
Немного о реализациях
Программа может работать как в CLI-интерфейсе (по умолчанию), так и в GUI — GTK+ 2 (если указан ключ -g ). В зависимостях — exiv2. Плюс, для C-версии — libxml2-dev. Ну и для GUI, ясен пень, gtk2.
С Perl-версией, надеюсь, всё понятно — просто запускаешь перловый скрипт с нужными ключами и радуешься. Perl-версия только на русском.
C-версия на английском с русской локализацией. Работает раза в два c половиной быстрее перловой версии, и отъедает раза в полтора меньше памяти. C-версию нужно компилировать и, по желанию, устанавливать. Всё, как обычно:
Установка
Обновление
Заходите в тот же каталог с сорцами проги:
Удаление из системы
Не удаление сорцов, а uninstall. Заходите в тот же каталог с сорцами проги:
Работает под никсами. На других платформах пока не проверял, но особых проблем быть, вроде, не должно (при условии, конечно, установленной GTK+ 2 и некоторого допиливания).
В общем, вот. Я доволен и полон желания поделиться сим свободным программным обеспечением (GNU GPL v3), прости Господи, с миром, заодно очень надеясь на конструктивную критику, комментарии и, чем чёрт ни шутит, форки и/или участие в проекте.
Стандарт IPTC-IIM
Содержание
Предпосылки и история
использовать
В августе 2014 года IPTC проверила 19 программных продуктов для обработки изображений и управления ими из низкобюджетного ( Обработка метаданных
Интернет-сообщества и онлайн-фотоуслуги имеют дело с загруженными файлами изображений с метаданными IPTC (и Exif- ) по-разному, как в презентации в Интернете, так и в тех случаях, когда пользователи выбирают изображения из онлайн-сервиса для загрузки. Объем метаданных загружаемых фотографий варьируется от «все метаданные будут сохранены» до «все метаданные будут удалены». Примеры:
Метаданные и авторское право
Сохранение метаданных IPTC об авторстве в поле «Уведомление об авторских правах» рекомендуется для правообладателей, таких как фотографы, графические дизайнеры или агентства изображений и новостей, чтобы иметь возможность доказать свое авторство.
Поэтому фотографы, графические дизайнеры и агентства часто включают соответствующие примечания в метаданные своих изображений. С помощью специального договорного положения вы можете гарантировать, что цифровая ретрансляция может происходить только с метаданными.
В 2016 году Freelens ассоциация фотографов выиграли судебное решение до Гамбурга областного суда (Az:. 308 O 48/15), согласно которому Facebook будет больше не разрешено автоматически удалять метаданные IPTC при загрузке фотографий.
Поля IPTC
Представление данных IPTC-IIM упоминается как «данные IPTC», «поля IPTC» или «заголовок IPTC».
Объект сообщения (или «объект») может быть, например, изображением (фотография / сканированное изображение / графика), текстом (новостной отчет), аудио / видео файлом или комбинацией этих объектов.









