wpf - FormatConvertedBitmap 黑白结果不佳

标签 wpf bitmap

这似乎是转换位图像素格式的标准方法,但在转换为黑白格式时,它给我的结果非常差:

    // convert to black & white bitmap
    FormatConvertedBitmap monoBitmap = new FormatConvertedBitmap(bitmap, PixelFormats.BlackWhite, null, 0);

    // save black & white bitmap to file
    fileName = string.Format("{0}.bmp", data.SelectedProduct.Code);
    bitmapEncoder = new BmpBitmapEncoder();
    bitmapEncoder.Frames.Add(BitmapFrame.Create(monoBitmap));
    using (Stream stream = File.Create(fileName))
    {
        bitmapEncoder.Save(stream);
    }

生成的图像文件非常颗粒化且像素化。我需要将其发送到行式打印机,因此我需要锋利的边缘。

转换前的原始图像看起来不错(其 32BPP 颜色),如果我使用 IrfanView 之类的工具将原始图像手动转换为黑白,它也会比 .NET 所做的任何事情都要好得多。

在 .NET 中除了 FormatConvertedBitmap 之外还有其他替代方法吗?

最佳答案

它使用的是PixelFormats.BlackWhite,它在生成的图像中仅使用黑色和白色,如果浅色像素被较暗的像素包围,这可能会使图像看起来有颗粒感。我想如果将图像转换为使用灰色阴影,效果会更好。为此,您需要使用这一行代码,而不是您发布的代码中的代码:

FormatConvertedBitmap monoBitmap = new FormatConvertedBitmap(bitmap, PixelFormats.Gray32Float, null, 0);

这应该将图像转换为仅使用灰色阴影,因此不需要颜色来打印它。

请告诉我这是否是您想要达到的效果。

您可以在此处找到有关 PixelFormats 类的更多信息:http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats.aspx .

关于wpf - FormatConvertedBitmap 黑白结果不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408574/

相关文章:

wpf - 使用拆分器后如何重置网格行高?

java - Android - 将多个图像合并为一个 ImageView

java - 如何用颜色填充自由绘制的形状

安卓 : How to create a bitmap with exact physical size in inches

c# - 使用 XAML/WPF 的路径/矢量的(自动)动画

wpf - 在 WPF ListView 标题中隐藏列之间的垂直线

c# - HttpWebRequest.BeginGetResponse

wpf - 无法弄清楚为什么某些控件被剪裁

python从二维数组制作位图数据

Android ImageReader.acquireLatestImage 返回无效的 JPG