在.NET Compact Framework上将位图转换为单色后的纯黑图像

时间:2012-07-12 18:19:32

标签: c# bitmap windows-mobile compact-framework

我的目标是使用Windows Mobile设备上的相机拍照并将该图像转换为单色位图,以便使用.NET Compact Framework在蓝牙打印机上打印。我找到了我在这里寻找的答案:

Convert image to 1 bpp bitmap in .net compact framework

当我添加此代码并使用相机拍摄的图像(.jpg文件大小约为300K)进行测试时,我将该图像传递到上述stackoverflow解决方案中的代码中的代码中,并且完成时没有任何错误。查看位图时,它是一个纯黑色图像。

传入代码的原始位图是否需要具有某种分辨率或是否有其他限制?用相机拍摄的原始图像是黑白色的。

1 个答案:

答案 0 :(得分:0)

这是一个棘手的问题。为了获得合理的结果,您真正需要做的是实现一种抖动算法,该算法允许打印机根据原始像素的“黑色”比例按比例分配白色和黑色点。如果您将算法限制为将每个像素转换为白色或黑色,则输出将不是您拍摄的原始照片的非常好的表示。通过抖动,您可以分析输入中的每个像素,并根据输入像素的暗度调整输出周围的像素。

一个常见的抖动实现是Floyd-Steinberg算法,在这里用它的基本形式描述:

Floyd-Steinberg Dithering

如果你谷歌的话,还有更多的信息。

因为它并不是一个简单的算法,所以要准备花一个多的下午才能完成它。