Как преобразовать ключи BitmapMetadata в соответствующие имена XMP? - PullRequest
2 голосов
/ 19 января 2010

Я пишу библиотеку с открытым исходным кодом, чтобы извлекать метаданные изображения и сохранять их как сериализованный XMP в дополнительном модуле XML (в идеале идентично тому, как приложения Adobe сериализуют свои метаданные).

Моя проблема в том, что BitmapMetadata имеет все значения, которые мне нужны, но ключи искажены. Многие из них являются просто целыми числами, а не соответствующими им именами в стиле XML в пространстве имен XMP. Microsoft утверждает, что они используют XMP для хранения для чтения / записи многих различных форматов метаданных на носителе, но я не вижу способа восстановить некоторые из стандартных имен XMP из них.

Например, Имя = "/{ushort=272}", Формат = "ifd" - это то, что у меня есть, но мне нужно <tiff:Model>, где xmlns:tiff="http://ns.adobe.com/tiff/1.0/". Для этого я могу использовать ExifTags из моей библиотеки ExifUtils для сопоставления некоторых ключей, потому что я знаю, что это такое. Хотя я не уверен во многих других.

Мой вопрос:

  1. Кто-нибудь, достаточно знакомый с BitmapMetadata, знает, нахожусь ли я в тупике?

  2. Существует ли стандартизированное сопоставление, которое кодирует Microsoft? Я еще не нашел его в официальных спецификациях Adobe XMP .


Обновление: открытый исходный код для этой библиотеки теперь доступен в Google Code как библиотека XmpUtils . Он поддерживает чтение / запись метаданных XMP в качестве стандартного XML на основе RDF.

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Кажется, я наткнулся на сопоставление клавиш на стр. 18 в части 3 спецификации XMP .Похоже, что BitmapMetadata просто представляет фрагменты данных XMP в кодировке JPEG:

Типы маркеров FFE0-FFEF обычно используются для данных приложения, называемых APPn.По соглашению маркер APPn начинается со строки, идентифицирующей использование, называемой пространством имен или строкой подписи.Маркер APP1 идентифицирует метаданные Exif и TIFF;маркер APP13 обозначает ресурс изображений Photoshop (PSIR), который содержит метаданные IPTC;другой маркер APP1 обозначает местоположение пакета XMP.

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


Обновление:

Я только что наткнулся на набор страниц MSDN («Политика метаданных фотографий») , который ссылается на довольно полный список путей языка запросов метаданных Microsoft (слева) для каждого свойства, которое они поддерживают,Это абсолютно ужасный формат с одним путем на страницу, но, похоже, мне нужно много данных.К сожалению, похоже, что есть разные пути для JPEG и TIFF ...


Обновление:

Также эта страница является ключевой, поскольку она определяет сумасшествие, котороетакой синтаксис, подобный XPath: Обзор языка запросов метаданных

1 голос
/ 08 февраля 2010

Как оказалось, Windows Imaging Component (WIC) , используемый BitmapMetadata, считывает / записывает множество различных типов блоков метаданных, включая TIFF, EXIF, IPTC, и XMP. Это объясняет, почему, к сожалению, их объектная модель не очень близко соответствует модели сериализации XMP; это очень обобщенно.

Отображение ключей, которое я искал, зависит от того, какой раздел декодируется, и даже в случае XMP это не совсем чистое преобразование. Ссылки MSDN в другом ответе дают подробное описание языка запросов метаданных, который является XPath-подобным синтаксисом, который WIC использует для ссылки на разделы метаданных в медиа. Это полезно для анализа каждого сегмента пути в ключе, который затем может использоваться для определения соответствующего пространства имен XMP и имени свойства.

Как я уже упоминал в этом вопросе, я сейчас создал эту библиотеку, которая корректно преобразует очень высокий процент свойств метаданных из блоков TIFF, EXIF ​​и XMP.

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

...