版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
二維碼編碼原理簡(jiǎn)介分類:Java2012-03-2811:4475人閱讀評(píng)論(0)收藏舉報(bào)二維碼編碼原理簡(jiǎn)介一、什么是二維碼:二維碼(2-dimensionalbarcode),是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的。在許多種類的二維條碼中,常用的碼制有:DataMatrix,MaxiCode,Aztec,QRCode,Vericode,PDF417,Ultracode,Code49,Code16K等。1.堆疊式/行排式二維條碼,如,Code16K、Code49、PDF417(如下圖)等2?矩陣式二維碼,最流行莫過(guò)于QRCODE二維碼的名稱是相對(duì)與一維碼來(lái)說(shuō)的,比如以前的條形碼就是一個(gè)'一維碼”,它的優(yōu)點(diǎn)有:二維碼存儲(chǔ)的數(shù)據(jù)量更大;可以包含數(shù)字、字符,及中文文本等混合內(nèi)容;有一定的容錯(cuò)性(在部分損壞以后可以正常讀取);空間利用率高等。二、QRCODE介紹QR(Quick-Response)code是被廣泛使用的一種二維碼,解碼速度快。它可以存儲(chǔ)多用類型
如上圖時(shí)一個(gè)qrcode的基本結(jié)構(gòu),其中:位置探測(cè)圖形、位置探測(cè)圖形分隔符、定位圖形:用于對(duì)二維碼的定位,對(duì)每個(gè)QR碼來(lái)說(shuō),位置都是固定存在的,只是大小規(guī)格會(huì)有所差異;校正圖形:規(guī)格確定,校正圖形的數(shù)量和位置也就確定了;格式信息:表示改二維碼的糾錯(cuò)級(jí)別,分為L(zhǎng)、M、Q、H;版本信息:即二維碼的規(guī)格,QR碼符號(hào)共有40種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號(hào)比前一版本每邊增加4個(gè)模塊。數(shù)據(jù)和糾錯(cuò)碼字:實(shí)際保存的二維碼信息,和糾錯(cuò)碼字(用于修正二維碼損壞帶來(lái)的錯(cuò)誤)。簡(jiǎn)要的編碼過(guò)程:數(shù)據(jù)分析:確定編碼的字符類型,按相應(yīng)的字符集轉(zhuǎn)換成符號(hào)字符;選擇糾錯(cuò)等級(jí),在規(guī)格一定的條件下,糾錯(cuò)等級(jí)越高其真實(shí)數(shù)據(jù)的容量越小。數(shù)據(jù)編碼:將數(shù)據(jù)字符轉(zhuǎn)換為位流,每8位一個(gè)碼字,整體構(gòu)成一個(gè)數(shù)據(jù)的碼字序列。
其實(shí)知道這個(gè)數(shù)據(jù)碼字序列就知道了二維碼的數(shù)據(jù)內(nèi)容。碼資斜容最數(shù)字最多7,089字祐字母最^4.296字苻二進(jìn)制數(shù)(8bit)最多2.953字節(jié)日文漢字/片假名最^1,817字符〔采用ShiftJIS)中文汶字最多9遵斗字符(采用UTF-S)中文漢字最^1,800字苻C采用)模式指示符ECI0111數(shù)字0001字母數(shù)字00108位字節(jié)0L00H本漢字1000中國(guó)漢字1101結(jié)構(gòu)鏈接0011FNC10101(第…位置)1001(第:〔位置)終止符佑息結(jié)尾)0000數(shù)據(jù)可以按照一種模式進(jìn)行編碼,以便進(jìn)行更高效的解碼,例如:對(duì)數(shù)據(jù):01234567編碼(版本1-H),1) 分組:012345672) 轉(zhuǎn)成二進(jìn)制:012—0000001100345—010101100167—10000113) 轉(zhuǎn)成序列:0000001100010101100110000114) 字符數(shù)轉(zhuǎn)成二進(jìn)制:8—00000010005) 加入模式指示符(上圖數(shù)字)001:00010000001000000000110001010110011000011糾錯(cuò)編碼:按需要將上面的碼字序列分塊,并根據(jù)糾錯(cuò)等級(jí)和分塊的碼字,產(chǎn)生糾錯(cuò)碼字,并把糾錯(cuò)碼字加入到數(shù)據(jù)碼字序列后面,成為一個(gè)新的序列。褚饃修正容■L水平7%的字瑪可被修正M水平15%的字碼可被修正Q水平哪的字碼可被修正H水平呂燈%的字碼可被修正在二維碼規(guī)格和糾錯(cuò)等級(jí)確定的情況下,其實(shí)它所能容納的碼字總數(shù)和糾錯(cuò)碼字?jǐn)?shù)也就確定了,比如:版本10,糾錯(cuò)等級(jí)時(shí)H時(shí),總共能容納346個(gè)碼字,其中224個(gè)糾錯(cuò)碼字。就是說(shuō)二維碼區(qū)域中大約1/3的碼字時(shí)冗余的。對(duì)于這224個(gè)糾錯(cuò)碼字,它能夠糾正112個(gè)替代錯(cuò)誤(如黑白顛倒)或者224個(gè)據(jù)讀錯(cuò)誤(無(wú)法讀到或者無(wú)法譯碼),這樣糾錯(cuò)容量為:112/346=32.4%構(gòu)造最終數(shù)據(jù)信息:在規(guī)格確定的條件下,將上面產(chǎn)生的序列按次序放如分塊中按規(guī)定把數(shù)據(jù)分塊,然后對(duì)每一塊進(jìn)行計(jì)算,得出相應(yīng)的糾錯(cuò)碼字區(qū)塊,把糾錯(cuò)碼字區(qū)塊按順序構(gòu)成一個(gè)序列,添加到原先的數(shù)據(jù)碼字序列后面。女口:D1,D12,D23,D35,D2,D13,D24,D36,...D11,D22,D33,D45,D34,D46,E1,E23,E45,E67,E2,E24,E46,E68,...構(gòu)造矩陣:將探測(cè)圖形、分隔符、定位圖形、校正圖形和碼字模塊放入矩陣中。
E5rD2IEI5EI4EllElEI2EIOEfirD22DI9DI7DI6DJ2EI3E7T剩余位EHD27D24DI5D25DI4R-D5:E5rD2IEI5EI4EllElEI2EIOEfirD22DI9DI7DI6DJ2EI3E7T剩余位EHD27D24DI5D25DI4R-D5:D2OSDLDllDidD9E9把上面的完整序列填充到相應(yīng)規(guī)格的二維碼矩陣的區(qū)域中掩摸:將掩摸圖形用于符號(hào)的編碼區(qū)域,使得二維碼圖形中的深色和淺色(黑色和白色)區(qū)域能夠比率最優(yōu)的分布。一個(gè)算法,不研究了,有興趣的同學(xué)可以繼續(xù)。格式和版本信息:生成格式和版本信息放入相應(yīng)區(qū)域內(nèi)。版本7-40都包含了版本信息,沒(méi)有版本信息的全為0。二維碼上兩個(gè)位置包含了版本信息,它們是冗余的。版本信息共18位,6X3的矩陣,其中6位時(shí)數(shù)據(jù)為,如版本號(hào)8,數(shù)據(jù)位的信息時(shí)001000,后面的12位是糾錯(cuò)位。至此,二維碼的編碼流程基本完成了,下面就來(lái)實(shí)踐一下吧,當(dāng)然不用自己再去編寫上面的算法了,使用三方包zxing就可以了編碼:publicstaticvoidencode(Stringcontent,Stringformat,StringfilePath){try{Hashtablehints=newHashtable();〃設(shè)置編碼類型hints.put(EncodeHintType.CHARACTER_SET,DEFAULT_ENCODING);〃編碼BitMatrixbitMatrix=newQRCodeWriter().encode(content,BarcodeFormat.QR_CODE,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT,hints);〃輸出到文件,也可以輸出到流Filefile=newFile(filePath);MatrixTolmageWriter.writeToFile(bitMatrix,format,file);}catch(IOExceptione){e.printStackTrace();}catch(WriterExceptione1){e1.printStackTrace();}}解碼:BufferedImageimage=ImagelO.read(file);//讀取文件LuminanceSourcesource=newBufferedImageLuminanceSource(image);BinaryBitmapbitmap=newBinaryBitmap(newHybridBinarizer(source));〃解碼Resultresult=newMultiFormatReader().decode(bitmap);StringresultStr=result.getText();System.out.println(resultStr);參考內(nèi)容及資料:HYPERLIN
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度石油天然氣設(shè)備維修保障協(xié)議2篇
- 2024年崗位安全教育培訓(xùn)試題及答案新版
- 23年-24年項(xiàng)目安全培訓(xùn)考試題及答案(名校卷)
- 2023年-2024年公司項(xiàng)目部負(fù)責(zé)人安全教育培訓(xùn)試題及答案審定版
- 23年-24年項(xiàng)目部安全管理人員安全培訓(xùn)考試題含完整答案(各地真題)
- 2023年-2024年新員工入職前安全教育培訓(xùn)試題答案各地真題
- 23年-24年項(xiàng)目安全培訓(xùn)考試題含答案【A卷】
- 2024項(xiàng)目部安全培訓(xùn)考試題及答案原創(chuàng)題
- 2023年項(xiàng)目部安全培訓(xùn)考試題附完整答案(奪冠系列)
- 裝修延期合同及清單
- 2023年譯林版英語(yǔ)五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 物業(yè)客服培訓(xùn)課件PPT模板
- 員工工資條模板
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
- 華為攜手深圳國(guó)際會(huì)展中心創(chuàng)建世界一流展館
- 2023版思想道德與法治專題2 領(lǐng)悟人生真諦 把握人生方向 第3講 創(chuàng)造有意義的人生
評(píng)論
0/150
提交評(píng)論