0

我使用 DCRaw 作为命令行实用程序从 DNG 图像中提取缩略图。缩略图颜色很差,反转它们也无济于事。

我用我的相机拍了一张照片,预览看起来像这样: 在此处输入图像描述

这是我如何称呼 DCRAW:

 Settings oSettings = Settings.GetInstance();
 var startInfo = new ProcessStartInfo(dcRawPath)
 {
    Arguments = "-e \"" + sInputFileName + "\"",
    UseShellExecute = true,
    RedirectStandardOutput = false,
    WindowStyle = ProcessWindowStyle.Hidden,
    CreateNoWindow = true,
    WorkingDirectory = RootDirectory
 };
 var process = Process.Start(startInfo);

结果 ppm 文件如下所示: 在此处输入图像描述

我尝试使用以下代码反转缩略图:

static readonly ColorMatrix _inverseColorMatrix = new ColorMatrix(new[]
{
   new float[] {-1, 0, 0, 0, 0},
   new float[] {0, -1, 0, 0, 0},
   new float[] {0, 0, -1, 0, 0},
   new float[] {0, 0, 0, 1, 0},
   new float[] {1, 1, 1, 0, 1}
});

public static Bitmap InverseImage(Bitmap source)
{
   var newBitmap = new Bitmap(source.Width, source.Height);
   using (var g = Graphics.FromImage(newBitmap))
   {
      var attributes = new ImageAttributes();
      attributes.SetColorMatrix(_inverseColorMatrix);
      g.DrawImage(source, new Rectangle(0, 0, source.Width, source.Height),
                            0, 0, source.Width, source.Height, GraphicsUnit.Pixel, attributes);
   }

   return newBitmap;
}

这给了我这样的缩略图:

在此处输入图像描述

我使用 Photoshop 得到了相同的结果,这意味着代码正确地反转了图像,但似乎这不是解析 DNG 缩略图的方法。

如何反转 DCRaw 生成的缩略图以提供与第一张图像非常相似的正确颜色。

注意:我的相机是带有 DNG 输出的 Lumia 1020。

编辑:可以从这里下载原始 DNG 文件

4

0 回答 0