c# - 如何将 BitmapMetadata 键转换为相应的 XMP 名称?

标签 c# wpf adobe xmp

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

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

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

我的问题:

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

  2. 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 数据部分:

The marker types FFE0-FFEF are generally used for application data, named APPn. By convention, an APPn marker begins with a string identifying the usage, called a namespace or signature string. An APP1 marker identifies Exif and TIFF metadata; an APP13 marker designates a Photoshop Image Resource (PSIR) that contains IPTC metadata; another APP1 marker designates the location of the XMP packet.

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


更新:

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


更新:

此页也是关键,因为它定义了类似 XPath 的语法的疯狂之处:Metadata Query Language Overview

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

相关文章:

c# - 尝试在 C# 中将转换运算符实现为可空类型时出错

c# - Null To Boolean IValueConverter 不工作

css - Adobe Flex 在矩形内显示内容 (itemRenderer)

ios - Adobe AIR 无法在 iOS 上加载 PDF

WPF DataGrid ContextMenu 命令绑定(bind)到 MVVMLight RelayCommand<T> 并不总是有效

javascript - Adobe Reader Javascript 打开 .DOC

javascript - 如何使编辑器仅在相关 bool 属性设置为 true 时才启用

c# - 如何使用 C# 通过 Gmail 发送电子邮件

c# - WCF 服务的方法返回不同类型的对象?

c# - 如何使用其 CanExecute 方法启用按钮