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

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 格式。

5
如果没有安装任何编解码器,你怎么能指望让任何东西理解数据呢?如果你自己了解文件格式,可以读取原始数据,并创建一个适当的位图源...但是必须有某个程序理解最基本的要素(大小、每像素格式、调色板或其他)。 - Jon Skeet
编解码器就像驱动程序一样,它告诉计算机如何解释数据。如果没有它,除非您编写自己的解码器,否则计算机不知道如何处理数据。 - Pete Garafano
你知道哪些指令/课程可以让我开始学习吗? - user2635745
"TheGreatCO" 我知道... - user2635745
1
尝试在Google中搜索“开源原始编辑器”或“开源原始转换”。这是我找到的第一个链接:http://rawstudio.org/ 尝试实现自己的数字相机原始文件处理可能会让你忙碌一年左右... - RenniePet
当你想回复一个评论者,比如TheGreatCO时,你应该在前面加上“@”,@TheGreatCo - StackOverflow会显示一个弹出窗口,你可以用鼠标选择。好处是TheGreatCO会收到通知,知道你已经回答了他/她的问题。 - RenniePet
2个回答

2
如果您没有安装编解码器,那么您需要读取原始图像数据并将其转换为位图或其他格式,以便您可以阅读。为此,您需要拥有该格式的规范副本,以便编写读取二进制数据的代码。
我强烈建议获取编解码器,或者找到已经处理转换的代码。但是,如果您真的想尝试编写图像格式转换代码,您首要任务是获取格式规范。
快速在[CR2图像格式]上进行Google搜索,就会发现这个佳能CR2规范。说实话,我不知道它有多准确,但看起来还算合理。通过搜索引擎,您可能会发现其他格式的类似文档。
请注意:编写这些转换可能是非常困难的任务。再次建议您找到一些现有的代码,以便更好地利用。

作为一名初学者程序员,我在哪里可以学习编写图像格式转换代码? - user2635745

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接