我使用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
This链接有一个名为LCD助手的软件,它可以根据需要进行相同的操作。您必须使用绘图将任何图像转换为位图,然后将该bmp图像导入到软件中。您可以选择的输出是384 X xyz。你得到十六进制输出像素。
BMP不是一个非常复杂的格式。维基百科有一个很好的[描述](http://en.wikipedia.org/wiki/BMP_file_format)。编码BMP解码器或查找现有的解码器。 –