在 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");
}
}
但是,它不适用于作业标识符/传输参考。如何从图像中读取此数据?
我会说问题是
- 您的变量 metadata 保存 decode.Metadata 的值,因为它不为空
- /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}");
}
}
我需要为系统提取一些元数据。
我已经有了以下代码,它适用于我需要访问的所有其他元数据属性。
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");
}
}
但是,它不适用于作业标识符/传输参考。如何从图像中读取此数据?
我会说问题是
- 您的变量 metadata 保存 decode.Metadata 的值,因为它不为空
- /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}");
}
}