获取NEF格式图像的拍摄日期



我有一个函数,可以获取JPEG格式图片的拍摄日期值。我在NEF尼康原始格式上遇到了问题。在 Windows 8 中,如果我将该列添加到 Windows 资源管理器详细信息视图,则可以看到"拍摄日期"值。

执行以下内容时收到的错误是"此编解码器不支持指定的属性"。

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的解决方案。

我终于弄清楚了这个问题,我不得不在我的电脑上安装尼康NEF编解码器。我感到困惑的是,Windows 8能够显示NEF图像并提供来自EXIF的元数据,例如开箱即用的日期。我的直觉告诉我,我可以使用Windows或.NET库,我可以在不安装编解码器的情况下获得相同的信息。不幸的是,我时间紧迫,没有时间深入研究。

Java在这里有一个更通用的开源库:元数据提取器

我刚刚导入了他们的库,它就像一个带有NEF文件的魅力,而且它支持更多的文件扩展名。

最新更新