我正在编写一个开放源代码库,以提取图像元数据并以XMP序列化存储在XML Sidecar中(与Adobe应用程序序列化其元数据的方式完全相同)。

我的问题是,BitmapMetadata似乎具有我需要的所有值,但键已损坏。其中许多只是整数,而不是其对应的XMP命名空间的XML样式名称。微软声称他们正在使用XMP来存储媒体中多种不同格式的元数据的读写,但是我看不出有任何方法可以从中重建一些标准XMP名称。

例如,名称= "/{ushort=272}",格式= "ifd"是我需要的,但我需要的是<tiff:Model>其中xmlns:tiff="http://ns.adobe.com/tiff/1.0/"。为此,我可以使用ExifUtils library中的ExifTag来映射某些键,因为我知道它是什么。我不确定其他许多东西。

我的问题:


熟悉BitmapMetadata的人知道我是否会陷入困境吗?
Microsoft是否有编码的标准化映射?我还没有在Adobe's official XMP specs中找到一个。




更新:此库的开放源代码现在可以在Google Code中以XmpUtils library的形式获得。它支持读/写XMP元数据作为基于RDF的标准XML。

最佳答案

我似乎偶然发现了page 18 in Part 3 of the XMP spec上的键映射。看起来BitmapMetadata只是公开了JPEG编码的XMP数据段:


  标记类型FFE0-FFEF为
  通常用于应用程序数据,
  名为APPn。按照惯例,APPn
  标记以字符串开头
  确定用法,称为
  名称空间或签名字符串。一个APP1
  标记标识Exif和TIFF
  元数据; APP13标记指定一个
  Photoshop图像资源(PSIR)
  包含IPTC元数据;另一个APP1
  标记指定位置
  XMP数据包。


不确定最终列表来自何处,因为这似乎不完整。



更新:

我偶然发现了an MSDN set of pages ("Photo Metadata Policy"),它链接到它们支持的每个属性的Microsoft元数据查询语言路径的相当全面的列表(左侧)。这是一种绝对可怕的格式,每页只有一个路径,但是似乎我需要很多数据。不幸的是,JPEG和TIFF似乎有不同的路径。



更新:

该页面也是关键,因为它定义了类似于XPath语法的疯狂程度:Metadata Query Language Overview

关于c# - 如何将BitmapMetadata key 转换为相应的XMP名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2095228/

10-12 00:29