【问题标题】:save greyscale image as color JPEG将灰度图像保存为彩色 JPEG
【发布时间】:2014-01-15 11:21:37
【问题描述】:

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

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

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

我也不能使用 C#/WPF 之外的任何解决方案(如 Imagemagick)。

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

有什么想法吗?

【问题讨论】:

  • 你想给灰度图像上色还是只是用 RGB 通道保存它但仍然是灰色?
  • 您是否也尝试过FormatConvertedBitmap
  • 我需要用 RGB 通道保存它,但仍然是灰色,将看看 FormatConvertedBitmap

标签: c# wpf image grayscale writeablebitmap


【解决方案1】:

FormatConvertedBitmap 的提示给了我解决问题的方法!感谢 RononDex!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多