我有一个函数可以获取JPEG格式的图片的日期值。我遇到了NEF尼康原始格式的问题。在Windows 8中,如果我将列添加到Windows资源管理器详细信息视图中,我可以看到Date Taken值。
执行以下操作时收到的错误是“此编解码器不支持指定的属性。”
public string GetDate(FileInfo f)
{
string date;
using (FileStream fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
BitmapSource img = BitmapFrame.Create(fs);
BitmapMetadata md = (BitmapMetadata)img.Metadata;
date = md.DateTaken;
}
return date;
}
我尝试了在article中使用BitmapMetadata的GetQuery方法在类似的SO答案中引用的建议,但是返回了相同的错误,这是我使用的代码:
public string GetDate(FileInfo f)
{
string date;
using (FileStream fs = new FileStream(f.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
BitmapSource img = BitmapFrame.Create(fs);
BitmapMetadata md = (BitmapMetadata)img.Metadata;
object t = Mdata.GetQuery("System.Photo.DateTaken");
}
return date;
}
我正在将其部署到Windows 8 PC,因此我不介意仅使用Windows 8或.NET 4.5。
答案 0 :(得分:3)
我终于找到了问题,我必须在我的电脑上安装Nikon NEF Codec。令我困惑的是,Windows 8能够显示NEF图像并提供EXIF的元数据,例如开箱即用的日期。我的直觉告诉我,我可以使用Windows或.NET库,我可以在不安装编解码器的情况下获得相同的信息。不幸的是,我时间紧迫,没有时间深入潜水。