0

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

在 .net 紧凑框架中将图像转换为 1 bpp 位图

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

传入代码的原始位图需要一定的分辨率还是有其他限制?用相机拍摄的原始图像一开始是黑白的。

4

1 回答 1

0

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

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

弗洛伊德-斯坦伯格抖动

如果你用谷歌搜索的话,会有更多的信息。

由于它不是一个简单的算法来实现,但要准备好花一个多下午的时间来让它恰到好处。

于 2012-07-13T14:07:32.607 回答