4

如何在不安装编解码器的情况下解码/打开 .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 格式。

4

2 回答 2

2

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

我强烈建议使用编解码器,或查找某人编写的已经处理转换的代码。但是,如果您真的想尝试编写图像格式转换代码,那么您的首要任务就是获取格式规范。

对 [CR2 图像格式] 的快速 Google 搜索显示此佳能 CR2 规范。说实话,我不知道这有多准确,但它看起来很合理。使用搜索引擎的时间可能会显示其他格式的类似文档。

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

于 2013-07-31T17:07:06.300 回答
2

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

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

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

于 2013-07-31T17:37:02.247 回答