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

Extract Job Identifier / TransmissionReference from image in C#

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

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

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

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

我会说问题是

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

解决方案是改用此查询:/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}");
    }
}