Как преобразовать ключи BitmapMetadata в соответствующие имена XMP?

2

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

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

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

Мой вопрос:

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

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


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

Теги:
wpf
adobe
xmp

2 ответа

1
Лучший ответ

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

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

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

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

2

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

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

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


Update:

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


Update:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню