在 C# 中使用元数据提取器获取自定义 XMP 元数据
Getting custom XMP metadata using metadata-extractor in c#
我正在使用 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 查看它时,属性 出现了。
xmp data in photoshop
XMP 数据存储在XmpDirectory
。通过以下方式访问:
var xmpDirectory = ImageMetadataReader.ReadMetadata("path\test.tif")
.OfType<XmpDirectory>().FirstOrDefault();
但请注意,元数据提取器中的 XMP 数据不遵循其他目录的标准 tag/value 格式。相反,您应该访问目录的 XmpMeta
属性 以检查该数据。
然后您可以编写如下代码:
foreach (var property in xmpDirectory.XmpMeta.Properties)
Console.WriteLine($"Path={property.Path} Namespace={property.Namespace} " +
"Value={property.Value}");
我正在使用 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 查看它时,属性 出现了。
xmp data in photoshop
XMP 数据存储在XmpDirectory
。通过以下方式访问:
var xmpDirectory = ImageMetadataReader.ReadMetadata("path\test.tif")
.OfType<XmpDirectory>().FirstOrDefault();
但请注意,元数据提取器中的 XMP 数据不遵循其他目录的标准 tag/value 格式。相反,您应该访问目录的 XmpMeta
属性 以检查该数据。
然后您可以编写如下代码:
foreach (var property in xmpDirectory.XmpMeta.Properties)
Console.WriteLine($"Path={property.Path} Namespace={property.Namespace} " +
"Value={property.Value}");