我正在编写一个开放源代码库,以提取图像元数据并以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/