QR二維碼編解碼系統(tǒng)_第1頁
QR二維碼編解碼系統(tǒng)_第2頁
QR二維碼編解碼系統(tǒng)_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、QR 二維碼編碼解碼系統(tǒng)目錄需求總目標QR 二維碼編碼要求QR 二維碼解碼要求人機交互界面要求項目分析編碼部分分析實現(xiàn)生成 BMP 圖片精確選擇每一個像素模塊的填充糾錯碼的生成最終數據碼數據碼的填充掩碼開發(fā)環(huán)境不足附錄需求總目標要求完成一套軟件系統(tǒng),該軟件系統(tǒng)可以高效、安全地完成混合數據信息(即數據信息由 英文字母、數字、二進制組成)的QR二維碼的編碼功能。QR 二維碼編碼要求1軟件系統(tǒng)讀取指定文件夾下面的文本文件數據信息內容,然后對數據信息進行QR二維 碼編碼,生成QR二維碼圖片文件,并保存在指定文件夾下面。每個文本文件中數據信息編碼后對應一個QR二維碼圖片文件。指定文件夾下面最多1 個文本

2、文件,即編碼后最多生成1個二維碼圖片文件。3生成的QR二維碼圖片為清晰的、黑白色BMP圖片,保存的文件名生成規(guī)則為當前日舲 時間+三位遞增序列號,文件后綴名為bmp。例如2017年1月11日10點38分40秒時刻生成 的序列號為5的圖片文件,其對應文件名為:20170111103840005.bmp。4.QR二維碼編碼時要求軟件系統(tǒng)能夠根據數據信息容量自動選擇二維碼的版本、碼元數, 要求糾錯級別為 H 級別(30%的糾錯能力)。4人機交互界面要求軟件系統(tǒng)的人機交互界面可以是命令行形式。人機交互界面至少需要提供以下功能:指定編碼的輸入文本夾、指定解碼的輸出文件夾、 指定QR二維碼圖片文件文件夾。

3、人機交互界面需要提供查看編解碼時的各種統(tǒng)計信息功能,包括統(tǒng)計編碼的數據信息字 節(jié)數統(tǒng)計、解碼的數據信息字節(jié)數統(tǒng)計、編解碼成功和失敗次數、編解碼成功率等。項目分析2.1 編碼分析要將文本進行二維碼編碼,最后的到一張BMP格式的二維碼圖片,首先要了解二維碼的生成原 理,可以參考ISO 18004號文件,該文件詳細介紹了 QR二維碼的生成原理及標準。 既然要生成二維碼,二維碼的格式有許多固定的模塊,最關鍵的數據部分可以生成數據后填充, 所以首先要先能生成一張BMP格式圖片,然后慢慢的往里面加不同的模塊,最后填充數據部分, 這樣,就完成了編碼生成二維碼圖片的部分??紤]到只系統(tǒng)學習了C語言,所以軟件系統(tǒng)

4、采用C語言編寫。實現(xiàn)生成 BMP 圖片Windows系統(tǒng)規(guī)定了 BMP圖片的標準,查資料了解了 BMP圖片的文件結構,就可以很輕松 的用C語言寫出,可以在網上搜索,有很多例子。精確選擇每一個像素由于我們需要將二維碼的固定模塊“畫”出來,所以需要精確的選擇到位圖上的每一個像 素。這時候就需要了解BMP文件結構的一個參數:biBitCount。這個參數的單位是:比特數/像素 表示用幾個比特表示單個像素的顏色。 由于用 RGB 標準來表示顏色比較簡單,所以這里我們給參數賦值為32(注意一定要是32), 這樣可以用十六進制表示每一個像素的顏色。例如:OxffOOOO表示紅色OxOOffOO表示綠色,

5、0 x0000ff 表示藍色。模塊的填充利用矩陣的思想,將二維碼固定的模塊填充進BMP圖片中,可以邊填充邊生成圖片看一下 是否準確。原始數據碼的生成采用fopen函數讀取文本文件,并保存到數組中,按照QR二維碼標準將讀取的數據一步 一步的轉化為二進制數據,標準中詳細介紹了如何處理讀取的數據。糾錯碼的生成項目要求要有30%的糾錯率,所以要根據糾錯碼算法利用前面生成的原始數據碼生成對應 的糾錯碼,主要用到了 Reed-Solomon糾錯算法,關于這點還沒研究透(涉及許多高等數學知識), 但按照步驟可以用算法實現(xiàn)糾錯編碼(解碼還不會)。生成糾錯碼后要轉化為二進制。最終數據碼將原始數據碼和糾錯碼按照標

6、準規(guī)定的格式順序放在一個數組中就是最終的二進制數據 碼了。3.6數據碼的填充 有了存放數據碼的數組,就可以填充進BMP圖片了,我們這樣實現(xiàn)數據的填充: 按照標準中規(guī)定的二維碼數據填充順序,對于第一個像素,判斷對于的數據碼是0還是1, 是 1,該像素就是黑色, O 就是白色。這樣,直到選擇完所有的像素點。這樣我們就得到了一個還算完整的二維碼,但這時生成的二維碼是掃不出來的,也就是說 不能被解碼的,因為還少了最后一步。掩碼 標準規(guī)定數據填充結束后要給數據區(qū)域加掩碼,目的是防止出現(xiàn)大面積像素相同的情況,一共有八種掩碼,為了方便,我們只采用了第一個掩碼。第一個掩碼的公式是(i+j) %2; 其中,i,j是單個像素的坐標,如果結果為0,就把當前模塊的顏色改為相反顏色,白變 黑,黑變白;如果結果不為0,就不改變。我們這樣實現(xiàn)掩碼: 一個一個的選擇數據區(qū)域的每一個像素,然后判斷結果是多少。 加了掩碼之后,生成的是最終的二維碼圖片,此時,該圖片就可以用二維碼解碼器將數據 識別出來了。開發(fā)環(huán)境編譯運行: Dev C+ 操作系統(tǒng): Windows7不足一、在讀取文件時沒有實現(xiàn)選擇文件夾就讀取里面的文本文件,必須要選擇到具體的文本 文件。二、數據填充的方式不夠好,由于要一個個的選擇每一個像素,而且每一個版本數據填充 的方法雖然原理一樣,但是并不通用,所以,一個

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論