Gprinter光柵位圖數(shù)據(jù)解析軟件是一款十分專業(yè)的工具,有時(shí)在工作中會(huì)遇到將熱敏打印機(jī)光柵位圖點(diǎn)陣數(shù)據(jù)保存為圖片文件的問題,這時(shí)這款軟件就可以派上用場(chǎng),只需拖拽數(shù)據(jù)文件到軟件即可,支持BusHound抓取的數(shù)據(jù)。最后保存的bmp和png格式圖片有利于圖像顯示。
使用說明:
數(shù)據(jù)解析是關(guān)鍵一環(huán),同時(shí)還需要考慮光柵位圖點(diǎn)陣數(shù)據(jù)的無損壓縮并評(píng)估壓縮效率。為了直觀顯示解析后的圖像和相關(guān)信息,并保存成bmp和png格式的圖片,基于MFC寫了一個(gè)小工具,界面如下圖所示。
窗口左側(cè)白色區(qū)域顯示解析后的圖像,右側(cè)顯示原始數(shù)據(jù)的信息及生成的Zip包、Bitmap及PNG圖片的信息。為了方便調(diào)試,數(shù)據(jù)文件支持通過Bus Hound抓取的txt,原始的光柵位圖點(diǎn)陣數(shù)據(jù),及其它們的zip壓縮包,只需將文件拖拽到窗口內(nèi)部即可完成解析。生成Bitmap時(shí),支持選擇掃描的方向,并可選擇生成原始數(shù)據(jù)的二進(jìn)制文件(Plain Binary)、經(jīng)過zip壓縮的原始數(shù)據(jù)的二進(jìn)制文件以及剔除原始數(shù)據(jù)中ESC指令的純數(shù)據(jù)文件(Pure Data)。
解析點(diǎn)陣數(shù)據(jù)后的圖像及相關(guān)信息如下圖所示。
在將光柵位圖點(diǎn)陣數(shù)據(jù)保存為Bitmap時(shí),需要特別注意,如果水平方向位圖字節(jié)數(shù)不是4的整倍數(shù),則需要擴(kuò)展到4的整倍數(shù)才可以。如本例中原始寬度為54字節(jié),需擴(kuò)展到56字節(jié),擴(kuò)展后的像素寬度為448(56*8)。另外,原始光柵位圖點(diǎn)陣數(shù)據(jù)是從上到下(Top-Down)排列的,如果生成Bitmap時(shí)選擇同向掃描,則BITMAPINFOHEADER結(jié)構(gòu)體中biHeight需為負(fù)數(shù),而一般的Bitmap文件為從下到上掃描(Bottom-Up),與原始數(shù)據(jù)排列方向剛好相反,此時(shí)biHeight為正?梢钥吹浇(jīng)過zip壓縮后的數(shù)據(jù)約為原有大小的1/5。PNG圖片大小也約為BMP的1/5,但通過Beyond Compare工具比較,圖像并未有任何損失,如下圖所示。
本次任務(wù)基本完成并達(dá)到預(yù)期效果。第一次接觸熱敏打印機(jī),算是有了一個(gè)初步的認(rèn)識(shí),后面有時(shí)間可以考慮把這個(gè)事情反過來做一遍,即把任意圖片文件轉(zhuǎn)換為光柵位圖點(diǎn)陣數(shù)據(jù),這樣就可以打印二維碼或其他復(fù)雜圖像了。