2012-12-18 64 views
3

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

执行以下操作时收到的错误是“此编解码器不支持指定的属性。”

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; 
     } 

我想,在相似的,所以答案参考,使用BitmapMetadata的GetQuery方法在此article的建议,而是返回了同样的错误,这里是我使用的代码:

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

回答

3

我终于明白了这个问题,我不得不在我的电脑上安装Nikon NEF Codec。我感到困惑的是,Windows 8能够显示NEF图像并提供EXIF的元数据,例如“取出日期”,开箱即用。我的直觉告诉我,我可以使用Windows或.NET库,无需安装编解码器即可获得相同的信息。不幸的是我时间紧迫,没有时间深入下去。

+0

我和你在同一条船上,只是在佳能的一面。 Jpegs很好,但是CR2图片是问题。 Windows资源管理器获取DateTaken时没有任何问题,但在通过WIC尝试时失败。 – Adarsha