C#关于Xmp元数据获取的坑

问题

如果按一般的元数据获取方法可能会出现下面的情况>>>郁闷中(# ̄~ ̄#)

"XMP": {
    "XMP Value Count": "22"
  }

分析

在这里插入图片描述
从上图可以看出xmp元数据跟大多数的元数据不一样,并不是从directory.Tags中获取各个属性的,而是通过XmlDirectories.XmpMeta.Properties获取到的

解决

FileStream img = new FileStream(imgPath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
if (img == null) {
    return null;
}
var directories = ImageMetadataReader.ReadMetadata(img);
JObject details = new JObject();
foreach (var directory in directories){
    if (directory.HasError){
        continue;
    }
    JObject item = new JObject();
    foreach (var tag in directory.Tags){
    Console.WriteLine($"[{directory.Name}] { tag.Name}={ tag.Description}");
    }
}
var XmlDirectories = directories.OfType<XmpDirectory>().FirstOrDefault();
//取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0) 
 foreach (var property in XmlDirectories.XmpMeta.Properties){
     Console.WriteLine($"Path={property.Path} Namespace={property.Namespace} " +
                                       "Value={" + property.Value + "}");
     if (!string.IsNullOrEmpty(property.Path))
     {
         if (property.Path.Equals("Camera:PoiNum")){
             rawPicture.PoiNum = int.Parse(property.Value);
             Console.WriteLine("rawPicture.PoiNum+" + rawPicture.PoiNum);
         }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AQin1012

求小鱼干呢~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值