我有一个拥有 JPEG 文件集合的用户,基于 Windows 7 NTFS 文件系统。
用户已使用 Windows 7“详细信息”对话框对这些图像进行了注释。他们为每个文件添加了标题、注释(可能与标题不同)和标签字段。
标题似乎作为 EXIF 数据的一部分存储在每个 JPEG 文件中。
但是,评论和标签字段不是。
我在备用数据流中寻找过它们;没有。我看不出它们是否是 NTFS 扩展属性,因为我找不到专门列出这些属性的工具。
我的问题是:这个元数据存储在哪里,我如何从 Ruby 中访问它?
从 Vista 开始,似乎有一个属性系统(1和2),其中属性存储在文件本身中以实现可移植性,与存储在替代数据流中的数据形成对比。请参阅 Alex Martelli 在这个问题中的回答,这是关于 Python 的类似回答。如果我理解了这个答案,您将需要找到一种方法来连接Windows Search API并查询System.Keywords和System.Comment属性。
在这种情况下,PowerShell 可能是要走的路;例如,此链接的“Windows 桌面搜索 cmdlet”部分中有一个示例。但是,您也许可以通过 Ruby 与 COM 对象或 WMI 对话。
埃里克的回答很接近(感谢埃里克)。
答案是Windows 使用文件中嵌入的 XMP来存储一些此类信息。其他一些部分存储在 EXIF 中。
XMP 是 Adobe 最先开发的一种 RDF 格式。
然而,在 Ruby 中提取和操作 XMP 的支持很差—— github 上有一些库,但没有很好的集成。
在我感兴趣的三个领域中:
我使用的方法是mini_exiftool,它包装了基于 Perl 的EXIFTool程序。