3

我有一个拥有 JPEG 文件集合的用户,基于 Windows 7 NTFS 文件系统。

用户已使用 Windows 7“详细信息”对话框对这些图像进行了注释。他们为每个文件添加了标题、注释(可能与标题不同)和标签字段。

标题似乎作为 EXIF 数据的一部分存储在每个 JPEG 文件中。

但是,评论和标签字段不是。

我在备用数据流中寻找过它们;没有。我看不出它们是否是 NTFS 扩展属性,因为我找不到专门列出这些属性的工具。

我的问题是:这个元数据存储在哪里,我如何从 Ruby 中访问它?

4

2 回答 2

2

从 Vista 开始,似乎有一个属性系统(12),其中属性存储在文件本身中以实现可移植性,与存储在替代数据流中的数据形成对比。请参阅 Alex Martelli 在这个问题中的回答,这是关于 Python 的类似回答。如果我理解了这个答案,您将需要找到一种方法来连接Windows Search API并查询System.KeywordsSystem.Comment属性。

在这种情况下,PowerShell 可能是要走的路;例如,此链接的“Windows 桌面搜索 cmdlet”部分中有一个示例。但是,您也许可以通过 Ruby 与 COM 对象或 WMI 对话。

于 2012-12-08T06:23:15.860 回答
1

埃里克的回答很接近(感谢埃里克)。

答案是Windows 使用文件中嵌入的 XMP来存储一些此类信息。其他一些部分存储在 EXIF 中。

XMP 是 Adob​​e 最先开发的一种 RDF 格式。

然而,在 Ruby 中提取和操作 XMP 的支持很差—— github 上有一些库,但没有很好的集成。

  • xmpleton 不显示所有元数据;
  • xmp 在 Microsoft 的元数据上崩溃;
  • fasttrack 没有集成到整个 ruby​​gem.org 基础架构中。

在我感兴趣的三个领域中:

  • “评论”存储在 EXIF 字段“XPComment”中。
  • “标题”存储在 EXIF 中的“XPTitle”字段下和 DC 命名空间下的 XMP 中的“描述”字段中
  • “标签”存储在 EXIF 中的“XPKeyword”字段下和 DC 名称空间的 XMP 中,作为“主题”字段的列表。

我使用的方法是mini_exiftool,它包装了基于 Perl 的EXIFTool程序。

于 2012-12-08T07:39:05.630 回答