代码之家  ›  专栏  ›  技术社区  ›  Darren Oster

在.NET中加载Canon.CR2文件

  •  1
  • Darren Oster  · 技术社区  · 15 年前

    BitmapDecoder bmpDec = BitmapDecoder.Create(new Uri(origFile), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
    BitmapEncoder bmpEnc = new BmpBitmapEncoder();
    bmpEnc.Frames.Add(bmpDec.Frames[0]);
    Stream ms = new MemoryStream();
    bmpEnc.Save(ms);
    Image srcImage = Bitmap.FromStream(ms);
    

    前几条线路似乎运行顺利,但

    bmEnc.Save(ms);
    

    只是挂起没有完成,没有引发任何异常。

    有人在这方面成功过吗?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Yann Ramin    15 年前

    我不相信位图解码器能理解。CR2。它目前还不是传统的图像格式,因为它包含原始拜耳传感器图像(每像素一种颜色),而不是标准图像。

    如果要转换CR2和其他相机原始格式,应查看DCRaw: http://www.cybercom.net/~dcoffin/dcraw/ 或者libraw(基于dcraw,友好的库): http://www.libraw.org/

        2
  •  4
  •   Jiří Zídek    11 年前

    W8.1或W7 https://www.microsoft.com/en-us/download/details.aspx?id=26829 看来效果不错

    var files = Directory.GetFiles(@"D:\DCIM","*.CR2");
                for(var i = 0; i < files.Length; i++) {
                    Console.Write("{0,-4}: {1} => ", i, files[i]);
                    var bmpDec = BitmapDecoder.Create(new Uri(files[i]), BitmapCreateOptions.DelayCreation, BitmapCacheOption.None);
                    var bmpEnc = new JpegBitmapEncoder();
                    bmpEnc.QualityLevel = 100;
                    bmpEnc.Frames.Add(bmpDec.Frames[0]);
                    var oldfn = Path.GetFileName(files[i]);
                    var newfn = Path.ChangeExtension(oldfn, "JPG");
                    using(var ms = File.Create(Path.Combine(@"D:\DCIM\100CANON", newfn), 10000000)) {
                        bmpEnc.Save(ms);
                    }
                    Console.WriteLine(newfn);
                }
    
        3
  •  2
  •   P6345uk    8 年前

    知道这是一个旧线程,但我发现一个很好的易于使用(Magick.NET)

    如何转换

    using (MagickImage image = new MagickImage("StillLife.CR2"))
    {
        image.Write("StillLife.jpg");
    }
    

    https://github.com/dlemstra/Magick.NET/blob/master/Documentation/ReadRawImageFromCamera.md

    nuget软件包安装细节

    安装Magick.NET-Q16-AnyCPU包

    https://github.com/dlemstra/Magick.NET