我正在使用Custom s'print DPT100-S热敏打印机制作收据打印应用程序。
它能够在一行中使用 384 像素打印图形。该数据必须使用 48 字节 (48x8=384) 传递到打印机。因此,每个“位”代表一个要打印的点(位为“0”表示白色,“1”表示黑色)。
所以,我需要创建一个程序,它将读取在 Windows Paint(或任何其他程序)中生成的单色 BMP,并使用 Linux 中的 C 程序将其转换为这种位格式。
请指导我。
我正在使用Custom s'print DPT100-S热敏打印机制作收据打印应用程序。
它能够在一行中使用 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
看看半色调。
一个快速的谷歌将为您提供参考和 Java 小程序,如下所示:http: //www.markschulze.net/halftone/index.html
如果您不必创建自己的程序并且乐于使用现成的软件,请尝试 ImageMagick 的convert
命令:http ://www.imagemagick.org/Usage/quantize/#halftone
例如
convert myfile.jpg -colorspace Gray -ordered-dither h4x4a printable-file.bmp
此链接有一个名为 LCD 助手的软件,它可以根据您的需要执行相同的操作。您必须使用绘画将任何图像转换为位图,然后将该 bmp 图像导入软件。您可以选择输出为 384 X xyz。你得到十六进制的输出像素。