在c#中读取原始图像文件

时间:2013-07-31 16:45:59

标签: c# wpf image decode

如何在没有安装编解码器的情况下解码/打开.CR2或.NEF和.ARW等原始图像文件,比如lightroom打开原始文件?我的代码看起来像这样:

if (fe == "CR2" | fe == "NEF" | fe == "ARW" )
{
    BitmapDecoder bmpDec = BitmapDecoder.Create(new Uri(op.FileName), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);

    BitmapSource bsource = bmpDec.Frames[0];
    info_box.Content = fe;
    imgControl.Source = bsource;
}

此工作仅适用于安装的原始编解码器,不适用于ARW格式。

2 个答案:

答案 0 :(得分:2)

如果您没有安装编解码器,那么您必须阅读原始图像数据并将其转换为您可以读取的位图或其他格式。为此,您需要格式规范的副本,以便您可以编写读取二进制数据的代码。

我强烈建议您使用编解码器,或者查找已编写已经处理转换的代码。但如果您真的想尝试编写图像格式转换代码,那么您的第一个业务是获得格式规范。

快速Google搜索[CR2图片格式]会显示此Canon CR2 Specification。说实话,我不知道它有多精确,但看起来很合理。使用搜索引擎的一点时间可能会显示其他格式的类似文档。

预先警告:编写这些转换可能是一项非常困难的任务。同样,我建议您找到一些可以利用的现有代码。

答案 1 :(得分:2)

如果您坚持不安装编解码器,那么最好的选择可能就是:

http://www.cybercom.net/~dcoffin/dcraw/
- 用C语言编写,支持大多数摄像机

http://sourceforge.net/projects/dcrawnet/
- 显然是DCRAW到C#的(部分?)端口,但项目似乎没有活动