这似乎是转换位图像素格式的标准方法,但在转换为黑白格式时,它给我的效果非常差:
// 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中是否有另一种方法可以做到这一点?
答案 0 :(得分:1)
正在使用PixelFormats.BlackWhite
,它在结果图像中仅使用黑白颜色,如果有较暗像素包围的光像素,则可能会使其看起来有颗粒感。如果您将图像转换为使用灰色阴影,我认为效果会更好。为了做到这一点,你需要这行代码,而不是你发布的代码中的代码:
FormatConvertedBitmap monoBitmap = new FormatConvertedBitmap(bitmap, PixelFormats.Gray32Float, null, 0);
这应该将图像转换为仅使用灰色阴影,因此打印时不需要颜色。
让我知道这是否是你想要达到的效果。
您可以在此处找到有关PixelFormats
课程的更多信息:http://msdn.microsoft.com/en-us/library/system.windows.media.pixelformats.aspx。