1

我正在使用 photoshop .jsx 脚本编写一些 XMP 元数据:

var xmp = new XMPMeta( activeDocument.xmpMetadata.rawData); XMPMeta.registerNamespace(nameSpace, nsPrefix);

然后将一些数据添加到这个新的命名空间。我可以通过在 Photoshop 中查看它File -> FileInfo。我的问题是如何使用我的 c# 项目中的元数据提取器库访问这些数据?当我使用以下代码时,我看不到我在任何目录中添加的新元数据:

FileStream OriginalFile = new FileStream("C:\\Users\\av\\Desktop\\test.tif", FileMode.Open, FileAccess.Read, FileShare.Read); IEnumerable<MetadataExtractor.Directory> directories = ImageMetadataReader.ReadMetadata(OriginalFile);

编辑: 我可以遍历所有属性,但是当我尝试这样做时

var xmpDirectory = ImageMetadataReader.ReadMetadata("path/test.tif").OfType<XmpDirectory>().FirstOrDefault(); xmpDirectory.XmpMeta.GetProperty("http://ns.adobe.com/xap/1.0/mm/xmpMM:DerivedForm/", "stRef:documentID")

我得到一个例外。当我通过 Photoshop 查看它时,该属性存在。

Photoshop中的xmp数据

4

1 回答 1

0

XMP 数据存储在XmpDirectory. 通过以下方式访问它:

var xmpDirectory = ImageMetadataReader.ReadMetadata("path\test.tif")
    .OfType<XmpDirectory>().FirstOrDefault();

但请注意,元数据提取器中的 XMP 数据不遵循其他目录的标准标记/值格式。相反,您应该访问XmpMeta目录的属性以检查该数据。

然后,您可以编写类似于:

foreach (var property in xmpDirectory.XmpMeta.Properties)
    Console.WriteLine($"Path={property.Path} Namespace={property.Namespace} " +
                       "Value={property.Value}");

在此处进行更多讨论,并此处获得有关 XMP 库的更多信息。

于 2016-10-24T21:14:08.853 回答