获取NEF格式图像的日期

时间:2012-12-18 19:51:50

标签: c# image image-processing

我有一个函数可以获取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。

1 个答案:

答案 0 :(得分:3)

我终于找到了问题,我必须在我的电脑上安装Nikon NEF Codec。令我困惑的是,Windows 8能够显示NEF图像并提供EXIF的元数据,例如开箱即用的日期。我的直觉告诉我,我可以使用Windows或.NET库,我可以在不安装编解码器的情况下获得相同的信息。不幸的是,我时间紧迫,没有时间深入潜水。