将灰度图像保存为JPG颜色

时间:2014-01-15 11:21:38

标签: c# wpf image grayscale writeablebitmap

我在我的应用程序中处理了许多不同的图像格式。幸运的是,我能够将处理图像格式的最大部分用于C#WPF。但是,我在保存图片时遇到了问题:

我想使用带有RGB配置文件的JpegBitmapEncoder将图像保存为JPEG。这适用于彩色图像格式。但是,当处理格式为Gray16或Gray8的图像时,生成的JPEG将具有灰度轮廓。我的JPEG格式确实需要RGB配置文件!

我知道我可以在Bgra32中创建一个新的WriteableBitmap,将数据复制到它并使用它来创建JPEG。然而,这意味着我需要自己处理不同的图像格式。最重要的是,我认为这种绕道计算效率非常低(我需要转换大量的图像数据!)。

此外,我无法使用C#/ WPF以外的任何解决方案(如Imagemagick)。

我希望有一种方法可以轻松有效地解决这个问题。我发现无法为此配置JpegBitmapEncoder,我尝试使用ColorConvertedBitmap但无济于事!

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

FormatConvertedBitmap的提示为我提供了解决问题的方法!谢谢RononDex!

FormatConvertedBitmap convertImg = new FormatConvertedBitmap(img, PixelFormats.Bgra32, null, 0);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(convertImg));
encoder.Save(stream);