2

我正在编写一个开源库来提取图像元数据并将其作为 XMP 序列化存储在 XML sidecar 中(理想情况下,与 Adob​​e 的应用程序序列化其元数据的方式相同)。

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

例如, Name= "/{ushort=272}", Format="ifd"是我所拥有的,但我需要的是<tiff:Model>where xmlns:tiff="http://ns.adobe.com/tiff/1.0/"。为此,我可以使用我的ExifUtils 库中的 ExifTags来映射一些键,因为我知道它是什么。我不确定其他许多人。

我的问题:

  1. 任何熟悉 BitmapMetadata 的人都知道我是否走上了死胡同?

  2. 是否有 Microsoft 正在编码的标准化映射?我还没有在Adob​​e 的官方 XMP 规范中找到它。


更新:这个库的开源代码现在可以在 Google Code 作为XmpUtils library 获得。它支持将 XMP 元数据作为标准的基于 RDF 的 XML 读取/写入。

4

2 回答 2

2

我似乎偶然发现了 XMP 规范第 3 部分第 18 页上的键映射。看起来BitmapMetadata只是暴露了 JPEG 编码的 XMP 数据部分:

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

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


更新:

我刚刚偶然发现了一组 MSDN 页面(“照片元数据策略”),它链接到它们支持的每个属性的相当全面的 Microsoft 元数据查询语言路径列表(左侧)。这是一种绝对可怕的格式,每页只有一个路径,但我需要的数据似乎很多。不幸的是,JPEG和TIFF似乎有不同的路径......


更新:

这个页面也是关键,因为它定义了这种类似于 XPath 的语法的疯狂:元数据查询语言概述

于 2010-01-19T22:30:39.697 回答
1

事实证明,BitmapMetadata 使用的Windows 映像组件 (WIC)读取/写入许多不同类型的元数据块,包括 TIFF、EXIF、IPTCXMP。这解释了为什么不幸的是它们的对象模型与 XMP 序列化模型不紧密对应;它是高度概括的。

我正在寻找的键映射取决于正在解码的部分,即使在 XMP 的情况下,它也不是完全干净的转换。另一个答案中的 MSDN 链接详细描述了元数据查询语言,这是 WIC 用来引用媒体中的元数据部分的类似 XPath 的语法。这对于将每个路径段解析为一个键很有用,然后可以使用该键来确定相应的 XMP 命名空间和属性名称。

正如我在问题中提到的,我现在已经构建了这个库,它可以正确转换来自 TIFF、EXIF 和 XMP 块的元数据属性的很大比例。

请参阅XmpUtils 库源代码以了解我最终如何以标准化方式提取此数据的详细信息。

于 2010-02-07T23:12:39.323 回答