如何将单色图像转换为热敏打印机的按位格式

时间:2011-11-18 11:24:22

标签: image-processing embedded thermal-printer

我正在使用Custom s'print DPT100-S热敏打印机制作收据打印应用程序。

能够在一行中使用384像素打印图形。必须使用48个字节(48x8 = 384)将此数据传递给打印机。因此,每个'bit'代表一个要打印的点(白色为'0',黑色为'1'。

因此,我需要创建一个程序来读取在Windows Paint(或任何其他程序)中生成的单色BMP,并使用Linux中的C程序将其转换为此位格式。

请指导我。

3 个答案:

答案 0 :(得分:3)

伪代码:

Read BMP
For each row in BMP
    For each group of 8 pixels in row
        output_byte = 0
        For each pixel in current group of 8
            output_byte <<= 1             // shift output_byte left by one bit
            output_byte |= (pixel != 0)   // set rightmost bit in output_byte
                                          // according to input pixel value
        Save output_byte in bitmap

答案 1 :(得分:2)

看看半色调。

快速Google会为您提供参考资料和Java applet,例如:http://www.markschulze.net/halftone/index.html

如果您不必创建自己的程序,并且乐于使用现成的软件,请尝试ImageMagick的convert命令:http://www.imagemagick.org/Usage/quantize/#halftone e.g。

convert myfile.jpg -colorspace Gray  -ordered-dither h4x4a printable-file.bmp

答案 2 :(得分:2)

This链接有一个名为LCD助手的软件,可以根据需要执行相同的操作。您必须使用paint将任何图像转换为位图,然后将该bmp图像导入软件。您可以选择输出为384 X xyz。你得到HEX的输出像素。