我有一个函数可以获取 JPEG 格式图片的拍摄日期值。我遇到了 NEF Nikon raw 格式的问题。在 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;
}
我尝试了类似 SO 答案中引用的本文中的建议,使用 BitmapMetadata 的 GetQuery 方法,但返回了相同的错误,这是我使用的代码:
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 的解决方案。