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();

ただし、me​​tadata-extractor の 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 に答える