c# - 在 C# 中使用元数据提取器获取自定义 XMP 元数据

标签 c# photoshop-script xmp metadata-extractor

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

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

然后将一些数据添加到这个新的命名空间。我可以通过检查 File -> FileInfo 在 Photoshop 中查看它。我的问题是如何使用 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 查看它时,该属性是存在的。

xmp data in photoshop

最佳答案

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}");

更多讨论here以及有关 XMP 库的更多信息 here .

关于c# - 在 C# 中使用元数据提取器获取自定义 XMP 元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40225513/

相关文章:

c# - 使用 Open AI,我需要检查返回的字符串是否一遍又一遍地重复字符

Javascript Photoshop 一一删除路径错误?

c# - 照片中的指南针元数据标签

java - itext 使用 Java 在 pdf 中创建 XMP

c# - 是否可以将自定义元数据添加到文件中?

c# - Razor:声明式 HTML 助手

c# - 将数据从 DataTable 插入到 Excel 工作表中

c# - C# 中的数据继承

javascript - 操纵窗口的 Photoshop 脚本(缩放、滚动等)

Javascript Photoshop : Syntax for changing text color of an already existing text layer