从C#中的图像中提取作业标识符/ TransmissionReference

时间:2015-06-26 21:32:30

标签: c# metadata xmp iptc lightroom

我需要为系统提取一些元数据。

我已经拥有以下代码,该代码适用于我需要访问的所有其他元数据属性。

using (Stream stream = new FileStream(imagePhysicalPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    var decoder = new JpegBitmapDecoder(stream, BitmapCreateOptions.None, BitmapCacheOption.None);
    var metadata = decoder.Metadata ?? decoder.Frames[0].Metadata as BitmapMetadata;

    if (metadata != null)
    {
        object job_identifier = metadata.GetQuery("/xmp/photoshop:TransmissionReference");
    }
}

但是,它不适用于作业标识符/传​​输参考。如何从图像中读取此数据?

2 个答案:

答案 0 :(得分:0)

我会说问题是

  1. 您的变量元数据保留 decode.Metadata 的值,因为它不为空
  2. / xmp / photoshop:TransmissionReference 的元数据位于 decoder.Frames [0] .Metadata

答案 1 :(得分:0)

解决方案是使用此查询:/app13/irb/8bimiptc/iptc/{str=Original Transmission Reference}

using (Stream stream = new FileStream(imagePhysicalPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
    var decoder = new JpegBitmapDecoder(stream, BitmapCreateOptions.None, BitmapCacheOption.None);
    var metadata = decoder.Frames[0].Metadata as BitmapMetadata;

    if (metadata != null)
    {
        object job_identifier = metadata.GetQuery("/app13/irb/8bimiptc/iptc/{str=Original Transmission Reference}");
    }
}