我使用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文件可以从Here
下载