馬俊俊 王棟 徐建良
摘 要:針對(duì)用戶使用二維碼進(jìn)行數(shù)據(jù)傳輸時(shí)數(shù)據(jù)量較大的問題,提出一套基于B/S架構(gòu)的Web端數(shù)據(jù)交換解決方案。該方案依托圖像處理技術(shù),瀏覽器端采用HTML5與JS技術(shù),服務(wù)器端采用OpenCV與C++技術(shù)。測(cè)試及試運(yùn)行結(jié)果表明,利用圖像處理技術(shù)保存和識(shí)別大數(shù)據(jù)量二維碼圖像的方案是可行的。該系統(tǒng)不僅可方便用戶在PC端和手機(jī)等移動(dòng)端的日常使用,也為二維碼的數(shù)據(jù)傳輸提供了一種新方式。
關(guān)鍵詞:二維碼;數(shù)據(jù)傳輸;圖像處理;B/S架構(gòu)
DOI:10.11907/rjdk.172733
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)005-0151-03
Abstract:The solution was proposed based on the Web data terminal switch within the B/S framework to solve the problem of large data quantity in quick response (QR) code transmission. We adopted image processing technology in this solution, used HTML 5 and JS technology for the browzer and employed OpenCV and C++ for the server terminal. The experiment showed that it was a feasible solution to store and recognise large QR Code imags, and it also provided a new method for QR code transmission.
Key Words:QR code; data transmission; image processing; B/S architecture
0 引言
隨著科學(xué)技術(shù)的飛速發(fā)展,二維碼技術(shù)因具有信息容量大、糾錯(cuò)能力強(qiáng)與編碼范圍廣等優(yōu)點(diǎn)在不同場(chǎng)合發(fā)揮著重要作用,比如信息獲取、手機(jī)支付、網(wǎng)站跳轉(zhuǎn)和防偽溯源等?,F(xiàn)階段二維碼是國(guó)內(nèi)外研究的熱點(diǎn),但大多數(shù)為二維碼編解碼方式在不同場(chǎng)景的應(yīng)用,也有對(duì)二維碼數(shù)據(jù)交換方式的研究,但還比較少且只是簡(jiǎn)單應(yīng)用,例如基于二維碼的醫(yī)療保健系統(tǒng)[1],二維碼技術(shù)在數(shù)字圖書館或食品安全監(jiān)管中的應(yīng)用[2-3],企業(yè)利用二維碼對(duì)數(shù)據(jù)實(shí)現(xiàn)雙向傳遞的研究等[4]。這些研究雖然應(yīng)用了二維碼,但未充分考慮用戶使用二維碼的便捷性與包含大數(shù)據(jù)量二維碼圖像的識(shí)別問題,還有很多值得深入研究的地方。
因此,本文提出一種以二維碼為介質(zhì),基于B/S架構(gòu)的數(shù)據(jù)交換方式。HTML5可在各大主流瀏覽器上實(shí)現(xiàn)調(diào)用本地?cái)z像頭拍照,利用強(qiáng)大的畫布功能進(jìn)行圖像預(yù)覽,并與JS配合控制圖像分塊上傳。對(duì)于大數(shù)據(jù)量的二維碼圖像進(jìn)行分塊拍攝,服務(wù)器端負(fù)責(zé)圖像預(yù)處理、拼接與解碼功能。該方式在PC端和手機(jī)等移動(dòng)智能設(shè)備的瀏覽器上均可實(shí)現(xiàn),也可應(yīng)用于內(nèi)外網(wǎng)物理隔離的信息化環(huán)境,既保證了數(shù)據(jù)交換的安全性,又方便了用戶使用,有較強(qiáng)的實(shí)際應(yīng)用價(jià)值。
1 編碼設(shè)計(jì)與實(shí)現(xiàn)
基于B/S架構(gòu)的Web端應(yīng)用程序編碼大致過程為:用戶打開瀏覽器輸入要編碼的內(nèi)容,瀏覽器將其發(fā)送給服務(wù)器,服務(wù)器端接收到數(shù)據(jù)后調(diào)用相應(yīng)編碼程序,將信息編碼成二維碼,并將該圖像返回瀏覽器端實(shí)現(xiàn)渲染。該編碼方法比較常見,可供參考的例子很多,此處不再贅述。
2 解碼設(shè)計(jì)與實(shí)現(xiàn)
2.1 瀏覽器端設(shè)計(jì)與實(shí)現(xiàn)
在瀏覽器端,用戶調(diào)用本地?cái)z像頭拍攝二維碼圖像,將該圖像通過AJAX向服務(wù)器端發(fā)送http請(qǐng)求,服務(wù)器端接收到二維碼圖像后,調(diào)用相應(yīng)處理程序?qū)ΧS碼圖像進(jìn)行識(shí)別處理,并將解碼結(jié)果返回瀏覽器。前后端交互流程如圖1所示。
2.1.1 瀏覽器調(diào)用攝像頭
在HTML5出現(xiàn)之前,瀏覽器要獲取本地?cái)z像頭只有通過第三方插件(ActiveX)或Flash獲取,微軟的Silvertlight中也可以獲取,但這些方式比較復(fù)雜。HTML5出現(xiàn)后,可兼容各大主流瀏覽器,只要配合JS即能簡(jiǎn)單快速地獲取本地?cái)z像頭,HTML5中的Canvas結(jié)合新增的標(biāo)簽可以打開本地?cái)z像頭并實(shí)現(xiàn)拍照和預(yù)覽功能,部分代碼如下:
varaCanvas=document.getElementById('canvas');
varaVideo=document.getElementById('video');
varctx=aCanvas.getContext('2d');
navigator.getUserMedia=navigator.getUserMedia
||navigator.webkitGetUserMedia||navigator.mozGetUserMedi
||navigator.msGetUserMedia;
navigator.getUserMedia({video:true},gotStream,noStream);
客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com
電信與信息服務(wù)業(yè)務(wù)經(jīng)營(yíng)許可證:京icp證060024號(hào)
Dragonsource.com Inc. All Rights Reserved