我的目标是使用Windows Mobile设备上的相机拍照并将该图像转换为单色位图,以便使用.NET Compact Framework在蓝牙打印机上打印。我找到了我在这里寻找的答案:
Convert image to 1 bpp bitmap in .net compact framework
当我添加此代码并使用相机拍摄的图像(.jpg文件大小约为300K)进行测试时,我将该图像传递到上述stackoverflow解决方案中的代码中的代码中,并且完成时没有任何错误。查看位图时,它是一个纯黑色图像。
传入代码的原始位图是否需要具有某种分辨率或是否有其他限制?用相机拍摄的原始图像是黑白色的。
答案 0 :(得分:0)
这是一个棘手的问题。为了获得合理的结果,您真正需要做的是实现一种抖动算法,该算法允许打印机根据原始像素的“黑色”比例按比例分配白色和黑色点。如果您将算法限制为将每个像素转换为白色或黑色,则输出将不是您拍摄的原始照片的非常好的表示。通过抖动,您可以分析输入中的每个像素,并根据输入像素的暗度调整输出周围的像素。
一个常见的抖动实现是Floyd-Steinberg算法,在这里用它的基本形式描述:
如果你谷歌的话,还有更多的信息。
因为它并不是一个简单的算法,所以要准备花一个多的下午才能完成它。