星空网 > 软件开发 > 操作系统

Gprinter光栅位图点阵数据解析工具

    最近参与的项目有一个需求,解析佳博热敏打印机的光栅位图点阵数据并保存为图片文件。数据是通过Bus Hound抓取的,如下图所示。

Gprinter光栅位图点阵数据解析工具images/loading.gif' data-original="http://images2015.cnblogs.com/blog/37056/201606/37056-20160618210947745-1411711224.png" width="526" height="200" />

  其中1b 40为初始化打印机的指令,对应的ASCII码为ESC @,1b 4a 18为打印并走纸的指令,对应的ASCII码为ESC J,1d 76 30为打印光栅位图的指令,对应的ASCII码为GS v 0,其后紧跟光栅位图模式(0x00)、水平方向位图字节数(0x0036)和垂直方向位图点数(0x0018),后面则为本帧的位图数据(0x36*0x18=1296字节)。数据文件后续以1b 4a 18的打印走纸帧和1d 76 30的位图数据帧循环往复,直至打印内容结束。

  数据解析是关键一环,同时还需要考虑光栅位图点阵数据的无损压缩并评估压缩效率。为了直观显示解析后的图像和相关信息,并保存成bmp和png格式的图片,基于MFC写了一个小工具,界面如下图所示。

Gprinter光栅位图点阵数据解析工具

  窗口左侧白**域显示解析后的图像,右侧显示原始数据的信息及生成的Zip包、Bitmap及PNG图片的信息。为了方便调试,数据文件支持通过Bus Hound抓取的txt,原始的光栅位图点阵数据,及其它们的zip压缩包,只需将文件拖拽到窗口内部即可完成解析。生成Bitmap时,支持选择扫描的方向,并可选择生成原始数据的二进制文件(Plain Binary)、经过zip压缩的原始数据的二进制文件以及剔除原始数据中ESC指令的纯数据文件(Pure Data)。

  解析点阵数据后的图像及相关信息如下图所示。

Gprinter光栅位图点阵数据解析工具

  在将光栅位图点阵数据保存为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工具比较,图像并未有任何损失,如下图所示。

Gprinter光栅位图点阵数据解析工具

  本次任务基本完成并达到预期效果。第一次接触热敏打印机,算是有了一个初步的认识,后面有时间可以考虑把这个事情反过来做一遍,即把任意图片文件转换为光栅位图点阵数据,这样就可以打印二维码或其他复杂图像了。




原标题:Gprinter光栅位图点阵数据解析工具

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

因假货泛滥,亚马逊部分站点或被列为“恶名市场”!:https://www.ikjzd.com/articles/108775
旺季狂欢的背后,为何危机四伏?:https://www.ikjzd.com/articles/108776
中国卖家的对手又多了!亚马逊全球开店成立越南服务团队!:https://www.ikjzd.com/articles/108777
写给新手卖家,亚马逊Listing撰写思路及优化技巧:https://www.ikjzd.com/articles/108778
商标在海外被恶意抢注,无法维权怎么办?:https://www.ikjzd.com/articles/108779
全球重磅!欧盟峰会通过英国“脱欧”新协议:https://www.ikjzd.com/articles/108780
独家对话爆剧操盘手刘羽砚:短剧凭什么让2亿人花钱观看? :https://www.kjdsnews.com/a/1836539.html
大牌退烧 白牌雄起? :https://www.kjdsnews.com/a/1836540.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流