Gprinter光栅位图数据解析软件是一款十分专业的工具,有时在工作中会遇到将热敏打印机光栅位图点阵数据保存为图片文件的问题,这时这款软件就可以派上用场,只需拖拽数据文件到软件即可,支持BusHound抓取的数据。最后保存的bmp和png格式图片有利于图像显示。
使用说明:
数据解析是关键一环,同时还需要考虑光栅位图点阵数据的无损压缩并评估压缩效率。为了直观显示解析后的图像和相关信息,并保存成bmp和png格式的图片,基于MFC写了一个小工具,界面如下图所示。
窗口左侧白色区域显示解析后的图像,右侧显示原始数据的信息及生成的Zip包、Bitmap及PNG图片的信息。为了方便调试,数据文件支持通过Bus Hound抓取的txt,原始的光栅位图点阵数据,及其它们的zip压缩包,只需将文件拖拽到窗口内部即可完成解析。生成Bitmap时,支持选择扫描的方向,并可选择生成原始数据的二进制文件(Plain Binary)、经过zip压缩的原始数据的二进制文件以及剔除原始数据中ESC指令的纯数据文件(Pure Data)。
解析点阵数据后的图像及相关信息如下图所示。
在将光栅位图点阵数据保存为Bitmap时,需要特别注意,如果水平方向位图字节数不是4的整倍数,则需要扩展到4的整倍数才可以。如本例中原始宽度为54字节,需扩展到56字节,扩展后的像素宽度为448(56*8)。另外,原始光栅位图点阵数据是从上到下(Top-Down)排列的,如果生成Bitmap时选择同向扫描,则BITMAPINFOHEADER结构体中biHeight需为负数,而一般的Bitmap文件为从下到上扫描(Bottom-Up),与原始数据排列方向刚好相反,此时biHeight为正。可以看到经过zip压缩后的数据约为原有大小的1/5。PNG图片大小也约为BMP的1/5,但通过Beyond Compare工具比较,图像并未有任何损失,如下图所示。
本次任务基本完成并达到预期效果。第一次接触热敏打印机,算是有了一个初步的认识,后面有时间可以考虑把这个事情反过来做一遍,即把任意图片文件转换为光栅位图点阵数据,这样就可以打印二维码或其他复杂图像了。