黃鎮(zhèn)建 蔡群英
摘要:QR二維碼的應(yīng)用廣泛,該文通過(guò)一個(gè)簡(jiǎn)單的項(xiàng)目,實(shí)現(xiàn)了基于Web的QR編碼與解碼的過(guò)程,可擴(kuò)展至各種具體的應(yīng)用,具有較大的參考意義。
關(guān)鍵詞:QR碼;二維碼;編碼;解碼
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)24-5671-02
當(dāng)前,QR二維碼廣泛地應(yīng)用于各種商業(yè)活動(dòng),如:產(chǎn)品防偽/溯源、廣告推送、網(wǎng)站鏈接、數(shù)據(jù)下載、商品交易、定位/導(dǎo)航、電子憑證、車輛管理、信息傳遞、名片交流、wifi共享等。應(yīng)用方通過(guò)Web平臺(tái)將業(yè)務(wù)信息加密、編制成二維碼圖像后,通過(guò)短信或彩信的方式將二維碼發(fā)送至用戶的移動(dòng)終端上,用戶使用時(shí)通過(guò)設(shè)在服務(wù)網(wǎng)點(diǎn)的專用識(shí)讀設(shè)備對(duì)移動(dòng)終端上的二維碼圖像進(jìn)行識(shí)讀認(rèn)證,作為交易或身份識(shí)別的憑證來(lái)支撐各種應(yīng)用[1]。
本文以一個(gè)簡(jiǎn)單的web項(xiàng)目為例,介紹QR二維碼的編碼及解碼的應(yīng)用。
1 QR二維碼簡(jiǎn)介[2]
QR碼(Quick Response Code)即快速響應(yīng)矩陣碼,是日本Denso公司于1994年9月研制的一種矩陣二維碼,能夠有效地表示中國(guó)漢字和日本漢字,具有信息容量大、可靠性高、高速識(shí)讀性和全方位(360°)識(shí)讀等特點(diǎn)。
一個(gè)完整的QR碼一般由兩部分組成:功能圖形和編碼區(qū)域。QR 碼結(jié)構(gòu)如圖1所示:
功能圖形包括尋像圖形、分隔符、定位圖形、校正圖形。QR碼對(duì)于不同的數(shù)據(jù)和不同的版本都保持相同的大小和形狀,通過(guò)功能圖形為QR碼的識(shí)別提供基準(zhǔn)和確定的位置。編碼區(qū)域包括數(shù)據(jù)碼字、糾錯(cuò)碼字、格式信息和版本信息,具體的圖形根據(jù)輸入數(shù)據(jù)、版本號(hào)、糾錯(cuò)等級(jí)而變化。
QR碼具有1到40個(gè)不同的版本,每一個(gè)版本的符號(hào)比前一版本的符號(hào)在每條邊上增加了4個(gè)模塊,版本1的大小是21模塊*21模塊,版本2的是25模塊*25模塊,版本40的模塊大小是177*177。QR碼有4個(gè)糾錯(cuò)等級(jí),分別用字母L、M、Q、H表示,對(duì)應(yīng)4種糾錯(cuò)容量。
2 編碼與解碼的實(shí)現(xiàn)
實(shí)現(xiàn)QR碼的編碼和解碼需要使用兩個(gè)類庫(kù):Qrcode_swetake.jar 和qrcode.jar。這兩個(gè)類庫(kù)在網(wǎng)上可以下載,使用Myeclipse開發(fā)工具。本項(xiàng)目設(shè)置二維碼圖片大小是140*140,版本為7,糾錯(cuò)等級(jí)設(shè)置為M,編碼模式設(shè)置為B,字符長(zhǎng)度不能超過(guò)120個(gè),為了突出顯示,特意將二維碼背景色設(shè)置為綠色。
2.1 編碼實(shí)現(xiàn)流程
在encode.jsp頁(yè)面中輸入要編碼的字符,如“韓山師范學(xué)院”,點(diǎn)擊“生成二維碼”按鈕,將所輸入的字符提交給Servlet程序QRCodeEncode.java處理,Servlet程序調(diào)用QR編碼程序QRCodeEncodeHandler.java實(shí)現(xiàn)編碼,生成一張二維碼圖片,保存在硬盤中,并將生成的圖片在頁(yè)面中顯示出來(lái),實(shí)現(xiàn)流程如圖2所示,運(yùn)行結(jié)果如圖4和圖5所示。
圖3 解碼實(shí)現(xiàn)流程圖
2.2 解碼實(shí)現(xiàn)流程
在decode.jsp頁(yè)面中選擇本地要解碼的QR圖片,如選擇上一步編碼形成的QR圖片“韓山師范學(xué)院.png”,上傳到服務(wù)器,由服務(wù)器的Servlet程序QRCodeDecode.java來(lái)處理,Servlet程序調(diào)用QR解碼程序QRCodeDecodeHandler.java實(shí)現(xiàn)解碼,解碼后結(jié)果“韓山師范學(xué)院”字符在頁(yè)面中顯示出來(lái),實(shí)現(xiàn)流程如圖3所示,運(yùn)行結(jié)果如圖6所示。
3 總結(jié)
本文實(shí)現(xiàn)了在web平臺(tái)上QR二維碼編碼和解碼的過(guò)程,由此可以擴(kuò)展至具體的二維碼的應(yīng)用,其核心技術(shù)都是相同的,對(duì)于安卓手機(jī)的二維碼的編碼和解碼原理和實(shí)現(xiàn)過(guò)程,與此項(xiàng)目相似。
參考文獻(xiàn):
[1] 百度百科.二維碼[OL].http://baike.baidu.com/view/132241.htm?fr=aladdin.
[2] 盛秋康.二維碼編解碼技術(shù)的研究與應(yīng)用[D].南京:南京理工大學(xué),2012.
[3] 郭克華,李敏,陳志剛.Java Web程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011.