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

Image processing 如何将热敏打印机的单色图像转换为位格式,image-processing,embedded,thermal-printer,Image Processing,Embedded,Thermal Printer,我正在使用热敏打印机制作收据打印应用程序 它能够在一行中使用384像素打印图形。必须使用48字节(48x8=384)将此数据传递到打印机。因此,每个“位”代表一个要打印的点(位为“0”表示白色,“1”表示黑色) 因此,我需要创建一个程序,它将读取在Windows Paint(或任何其他程序)中生成的单色BMP,并在Linux中使用C程序将其转换为该位格式 请指导我。伪代码: Read BMP For each row in BMP For each group of 8 pixels i

我正在使用热敏打印机制作收据打印应用程序

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

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

请指导我。

伪代码:

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
读取BMP
对于BMP中的每一行
每行8个像素的每组
输出字节=0
对于当前8个像素组中的每个像素

输出字节看看半色调

一个快速的Google将为您提供参考和Java小程序,如下所示:

如果您不必创建自己的程序,并且乐于使用现成的软件,请尝试ImageMagick的
convert
命令: e、 g


link有一个名为LCD assistant的软件,它可以根据您的需要执行相同的操作。您必须使用paint将任何图像转换为位图,然后将该bmp图像导入软件。您可以选择的输出为384 X xyz。您可以获得十六进制格式的输出像素。

BMP的格式并不复杂。维基百科有一个很好的例子。编码BMP解码器或查找现有解码器。
convert myfile.jpg -colorspace Gray  -ordered-dither h4x4a printable-file.bmp