sonyps4.ru

Программа для просмотра метаданных и exif. EXIF

  • Описание
  • 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 данные действительно содержат большое количество информации о фотографии, однако когда дело доходит до выкладывания фото в интернет, что в наш век делает практически каждый, встает двоякий вопрос — оставлять или удалять эти данные.

EXIF полезен тем, что содержит подтверждение того, что снимок сделан с вашей камеры, что, например, может помочь . Также EXIF полезен просто при изучении фотографий мастеров, когда вам интересно, как были выставлены диафрагма, выдержка и остальные параметры съемки. Вот как, например, на сайте 500px.com:

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

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

GadgetTrack.com, ставший еще более популярным благодаря тому, что помог , действительно выдал намного больше результатов по моим фотографиями — в целом, по данным сайта, они проиндексировали более 10.4 млн. серийных номеров. Однако, этот сервис автоматически не определяет серийный номер: для этого вам придется заглянуть в EXIF одного из своих снимков самостоятельно, согласно одному из методов, показанных в статье про то, .

Что же делать, если вы все-такие не хотите раскрывать подробностей фотографии?

Опять же способов здесь несколько.

1. Самый простой способ редактировать EXIF был описан еще в прошлом уроке — просто жмете правой кнопкой мышки на файл и заходите в пункт меню Properties, заходите во вкладку Details и жмете на ссылку Remove Properties and Personal Information. В открывшемся окне выбираете, какие данные удалить, а какие оставить и оставить ли вообще.

2. Следующий способ удобен при обработке фотографии и ее сохранении для последующего опубликования в интернете. В фотошопе есть специальная функция для этого File -> Save for Web & Devices или просто наберите t+Shit+Ctrl+S. Здесь вам необходимо выбрать формат файла, в частности, jpg и в поле metadata указать, как вы хотите редактировать exif данные — что оставить, а что убрать, или вообще удалить все exif данные.

Главы статьи:

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

Существует много разных программ редакторов метаданных для разных типов файлов, но фотографа интересуют программы, которые понимают такие форматы как EXIF, GPS, IPTC, XMP. Таких программ тоже много, но все они имеют свои достоинства и недостатки. Это нужно учитывать, выбирая себе программу для работы с метаданными

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

Все редакторы метаданных и другие программы, которые умеют с ними работать, для выбора удобно объединить в три большие группы. Каждая из них состоит из набора характерных функций. Это может быть только просмотр метаданных, полное их удаление и редактирование отдельных тегов метаданных. Рассмотрим каждую такую группу отдельно.

Простой просмотр метаданных

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

Простых программ для просмотра тегов метаданных существует много. Каждая из них имеет свои особенности, которые необходимо учитывать при выборе программы для своих целей. Для этого их нужно сравнить, а потом сделать выбор в пользу той или иной программы. Одной из очень удобных таких программ можно выделить KUSO Exif Viewer (рис.1).

Рис.1 Программа KUSO Exif Viewer не является редактором метаданных, но очень удобна для их просмотра.

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

ShowEXIF
Firefox ExIF
Firefox Exify
Firefox Viewer
Chrome Exponator
Chrome EXIF Viewer
Chrome Image Tools
Chrome EXIF Reader
Chrome View Image Info
Chrome Image Properties Context Menu
FastStone Image Viewer
Shutter Count Viewer
KUSO Exif Viewer
RawTherapee
Adobe Bridge
Opera 12.17
Exif-O-Matic
Picasa

Полное удаление метаданных

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

Хотя полное удаление метаданных из файлов цифровых фотографий это только одна из операций по их редактированию, те программы, которые это могут сделать, могут считаться редакторами метаданных. Их так же можно использовать и для просмотра метаданных, но не все. Некоторые из них удаляют метаданные без отображения в интерфейсе (рис.2).

Рис.2 Easy Exif Delete – простой редактор метаданных, в котором их можно только удалить из выбранных файлов, но при этом они не видны.

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

Total Exif Annihilator
Exif Tag Remover
Easy Exif Delete
JPEG Cleaner
ExifCleaner

Редактирование метаданных

Часто при работе с метаданными цифровых фотографий их приходится изменять или добавлять в них новую информацию. Это можно сделать в специальных программах редакторах метаданных или в программах, где есть такие функции. Эти программы также относятся к группе программ «Редакторы метаданных».

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

Рис.3 Exif Pilot Pro – один из лучших редакторов для пакетной обработки метаданных.

Редакторы метаданных отличаются между собой не только количеством тегов, которые можно изменять, но и другими полезными функциями по работе с ними. Они также отличаются пользовательским интерфейсом и лицензией распространения – есть платные и бесплатные.

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

Проводник Windows
Adobe Photoshop
Exif Farm Free
Exif Pilot Pro
ExifTool Gui
Lightroom
PhotoME
Exif Pilot
ExifAuto
ImBatch
XnView
Exiftool
Exifer
GIMP

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

О том, как практически использовать редакторы метаданных в работе с фотографиями читайте в следующих статьях:

Утилита ExifTool предназначена для просмотра и редактирования метаданных большого количества форматов файлов. В первую очередь используется для просмотра и редактирования параметров съемки в файлах цифровых фотографий. Лицензия: GPL. Сайт: sno.phy.queensu.ca/~phil/exiftool/

Общие сведения

Очень многие форматы файлов кроме основного содержания имеют в себе ещё и метаданные. Эти метаданные могут в каждом конкретном случае описывать различные дополнительные параметры содержимого файла.

Наиболее известным стандартом метаданных, является стандарт EXIF (англ. Exchangeable Image File Format) - стандарт, позволяющий добавлять к различным типам файлов дополнительную информацию, описывающую условия и способы их получения, GPS координаты, авторство, комментарии и многое другое. Наиболее активно стандарт EXIF используется для фотоизображений, и практически каждый современный цифровой фотоаппарат записывает большое количество EXIF данных на каждый фотоснимок.

Другие форматы данных тоже могут иметь свои метаданные. Это видеофайлы, различные файлы документов - PDF, Djvu и т.д.

Просмотреть и редактировать метаданные файлов можно при помощи большого количества утилит и программ. Особо отметим консольную утилиту ExifTool как наиболее универсальный и мощный инструмент для работы с метаданными файлов.

Эта утилита работает из командной строки. Она существует для любых операционных системах - Linux, Windows, MacOS. Однако для неё есть и дополнения в виде приложения с графическим интерфейсом, как, например, Exiftoolgui для Windows.

Ещё примером графической оболочки для ExifTool можно назвать утилиту PyExifToolGUI. ()

Судя по названию, утилита ExifTool в первую очередь предназначена для работы с метаданными EXIF в цифровых фотографиях. Поддерживаются форматы фотоизображений: JPEG, TIFF, PNG, DNG, NEF, PEF, CRW, JP2, CR2, MRW, ARW, SR2, ORF, RAF, и другие.

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

  • видео и аудио: 3gp, AVI, MPG, MOV, WEBM, MP3, MP4, Ogg и др.;
  • документы: PDF, Djvu, RTF, PPT, EPUB и др.;
  • архивы и бинарные файлы: ZIP, DLL и др.

При этом для одних файлов доступно как чтение метаданных, так и их редактирование. А для других типов файлов доступно только чтение. Полную информацию о многочисленных возможностях утилиты ExifTool почерпнуть, выполнив, после установки программы, команду

Man exiftool

В мануале будет таблица, где символами будет помечена возможность редактирования метаданных для такого типа файла. Символ (r) - метаданные только для чтения, (w) - метаданные можно с помощью ExifTool перезаписывать, (c) - метаданные можно создавать.

Некоторые примеры работы ExifTool с фотографиями

Рассмотрим несколько опций этой консольной утилиты, необходимых для базовой работы с метаданными EXIF в файлах фотоизображений, так как этот формат метаданных используется практически во всех цифровых фотокамерах. Хотя ExifTool работает и с форматами метаданных XMP, IPTC.

Чтение и редактирование тегов

Exiftool FOTO.JPG

Exiftool -ISO FOTO.JPG

Показать теги, в которые возможно редактировать.

Exiftool -listw FOTO.JPG

Запись значения конкретного тега EXIF в файл изображения делается через символ присваивания = .

Exiftool -ISO="200" FOTO.JPG

Удаление значения конкретного тега EXIF в файле изображения делается через присваивания пустого значения.

Exiftool -ISO="" FOTO.JPG

Естественно консольная утилита exiftool хороша для пакетной обработки файлов, когда один или несколько одинаковых тегов нужно записать или удалить во множестве изображений. Ниже команда запишет значение ISO во все файлы с расширением jpg в текущей папке. Символ * в имени файла - шаблон для любого имени.

Exiftool -ISO="200" *.JPG

При редактировании тегов утилита создаёт рядом с новым файлом файл-оригинал с суффиксом "_original". Если этого не требуется, нужно использовать дополнительную опцию -overwrite_original .

Exiftool -ISO="200" -overwrite_original *.JPG

Примечание: если же эту опцию забыли написать и ExifTool создал много архивных копий с суфиксом "_original", то удалить эти копии можно выполнив в консоли для систем Linux в текущем каталоге несложный однострочный скрипт:

For f in *_original ; do rm $f; done

Можно скопировать тэги из одного файла в другой. Ниже пример команды, когда тэги EXIF будут скопированы из файла FOTO.DNG в FOTO.JPG

Exiftool -TagsFromFile FOTO.DNG FOTO.JPG

Так возможно копирование тегов для нескольких файлов в папке (оригинальные файлы и производные лежат рядом).

Exiftool -TagsFromFile %d%f.DNG -r -ext JPG путь_к_каталогу

Название и пояснения к наиболее популярным EXIF-тегам

  • Make - производитель камеры
  • Model - модель камеры
  • DateTime - дата последнего изменения изображения
  • ExposureTime - выдержка
  • FNumber - число диафрагмы
  • ISO - светочувствительность
  • DateTimeOriginal - время съемки
  • FocalLength - фокусное расстояние объектива на камере
  • Artist - автор
  • Copyright - копирайт
  • UserComment - комментарии пользователя к файлу

Чтобы не вводить каждый раз какой-либо набор тегов, их можно записать в отдельный текстовой файл. Например, набор общих тегов для любых оцифрованных снимков с фотоаппарата "Смена 8М" можно записать в виде такого текстового файла с названием, например lens8M.txt.

N -EXIF:LensModel=LOMO T-43 (Triplet) 40mm f/4 -EXIF:Model=Smena 8M -EXIF:FocalLength=40 -EXIF:MaxApertureValue=4

А потом просто вызывать в качестве параметра опции -@ .

Exiftool -@ lens8M.txt *.JPG

Геотеги, прочитать и редактировать

Exiftool - самый простой и доступный способ добавить метаданные о географическом расположении (геотеги) как в файлы цифровых фотографий, так и в файлы видео.

Удалить конкретные геотеги через пустое значение. Например, правильным считается при публикации фотографий в интернете удалить из них геотэги. Примечание: между двумя одинарными кавычками -geotag="" должно быть пустое значение, а не пробел.

Exiftool -geotag="" FOTO.JPG

И наоборот, например, установить долготу и широту в метаданных цифрового фотоснимка можно с помощью параметров -GPSLongitude и -GPSLatitude соответственно. Например

Exiftool -GPSLongitude="27,46" -GPSLatitude="53,89" FOTO.JPG

ExifTool может работать с GPS-треками, в результате чего можно синхронизировать координаты GPS-трека и время создания фотоснимка. То есть, если во время фотосъёмок создавался GPS-трек, то из него с помощью ExifTool можно автоматически извлечь гео-координаты, соответствующие времени создания снимка, и записать их в метаданные фотографии.

Exiftool -geotag track.gpx *.JPG

Манипуляции с датой и временем

Неправильно выставленное в фотокамере время - ещё одна распространённая досадная оплошность, которую ExifTool поможет исправить. Особенно это неприятно при синхронизации GPS-треков и фотографий. Потому что синхронизация с координатами GPS-трека происходит по времени создания фотографии, и отставание-спешка фотокамеры даже на одну минуту может привести к большим ошибкам координат места съёмки в метаданных цифрового фотоснимка. Исправить ситуацию можно с помощью специального формата год:месяц:день часы:минуты:секунды для опции -DateTimeOriginal , который несложно понять на следующем примере. Допустим, нам надо сделать фотографию старше «старше» на один год и один час.

Exiftool "-DateTimeOriginal-=1:0:0 1:00:00" FOTO.JPG

Обратите внимание на знак уменьшения - перед знаком = . Если фотографию нужно сделать «моложе» по времени создания, то ставится знак + .

Можно изменить сразу три временны́х тега - DateTimeOriginal, CreateDate и ModifyDate. Для этого следует использовать опцию -AllDates .

Можно осуществить переименование имён файлов изображений на основе даты из EXIF с удалением оригинального имени файла.

Exiftool -d %Y%m%d-%H%M%S.%%e "-filename

Переименование на основе даты создания без удаления начального имени файла.

Exiftool -d %Y%m%d-%H%M%S%%-c-%%f.%%e "-filename

В ходе манипуляций ExifTool поменяет дату модификации файла. Восстановить оригинальную дату оригинала:

Exiftool "-filemodifydate

Вообще метаданные могут иметься у изображений различных форматов, однако я буду рассказывать на примере 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.

Чтение метаданных

Вот готовый пример функции, с помощью которой можно читать метаданные из файла:

  1. FileStream f = File .Open("test.jpg" , FileMode.Open);
  2. BitmapDecoder decoder = JpegBitmapDecoder.Create(f, BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default);
  3. BitmapMetadata metadata = (BitmapMetadata)decoder.Frames[ 0 ].Metadata;
  4. // Получаем заголовок через поле класса
  5. string title = metadata.Title;
  6. // Получаем заголовок из XMP
  7. string xmptitle = (string )metadata.GetQuery(@"/xmp/dc:title" );
  8. // Получаем заголовок из EXIF
  9. string exiftitle = (string )metadata.GetQuery(@"/app1/ifd/{ushort=40091}" );
  10. // Получаем заголовок из IPTC
  11. string iptctitle = (string )metadata.GetQuery();

Тут все достаточно просто и прозрачно, поэтому сразу перейдем к записи.

Запись метаданных

  1. BitmapMetadata md = new BitmapMetadata ("jpg" );
  2. md.SetQuery(@"/xmp/dc:title" , xmptitle);
  3. md.SetQuery(@"/app1/ifd/{ushort=40091}" , exiftitle);
  4. md.SetQuery(@"/app13/irb/8bimiptc/iptc/object name" , iptctitle);
  5. BitmapFrame frame = BitmapFrame.Create(decoder.Frames[ 0 ], decoder.Frames[ 0 ].Thumbnail, md, decoder.Frames[ 0 ].ColorContexts);
  6. BitmapEncoder encoder = new JpegBitmapEncoder ();
  7. encoder.Frames.Add(frame);
  8. FileStream of = File .Open("test2.jpg" , FileMode.Create, FileAccess.Write);
  9. encoder.Save(of);
  10. 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, или я пишу давно известные вещи?



Загрузка...