二維碼總結

二維碼的總結


立刻又要準備面試了,想起本身兩年前應聘錘子科技的時候,和人家聊項目的時候被人家一聊就死。此情此景依然歷歷在目,因而打算沉下心來看看簡單的二維碼,一看發現這裏面的知識點還真很多,今天就來總結一下其中的知識點。其實主要分爲兩類:html

  • 二維碼生成原理
  • 二維碼解析流程分析
  • 二維碼功能分析

1、二維碼生成原理

二維碼的生成原理主要涉及如下幾個概念:面試

  1. 二維碼的定位圖案
  • Position Detection Pattern 標記二維碼矩形的大小,只有三個,由於三個點肯定一個矩形
  • Timing Patterns 定位矩形位置的基準線,根據 Position Detection Pattern 三個點獲得的兩條基準線
  • Alignment Patterns 定位須要的小矩形,只有二維碼版本在2以上才能使用
  1. 二維碼功能性數據
  • Error Correction Level 糾錯級別
  • Masking 操做模式(有八種操做模式)
  • 糾錯碼 經過BCH Code 計算得來 上面三個數據最終還須要與101010000010010作XOR操做。這樣就保證不會由於咱們選用了00的糾錯級別和000的Mask,從而形成所有爲白色,這會增長咱們的掃描器的圖像識別的困難。
  • Version Information 在 >= Version 7以上,須要預留兩塊3 x 6的區域存放一些版本信息。
  1. 數據碼
  • Numeric mode 數字編碼,從0到9。
  • Alphanumeric mode 字符編碼。包括 0-9,大寫的A到Z(沒有小寫),以及符號$ % * + – . / : 包括空格。
  • Byte mode, 字節編碼,能夠是0-255的ISO-8859-1字符。
  • Kanji mode 這是日文編碼,也是雙字節編碼。一樣,也能夠用於中文編碼。
  • Extended Channel Interpretation (ECI) mode 主要用於特殊的字符集。
  • Structured Append mode 用於混合編碼,也就是說,這個二維碼中包含了多種編碼格式。
  • FNC1 mode 這種編碼方式主要是給一些特殊的工業或行業用的。好比GS1條形碼之類的。
  • 結束符 佔位
  • 補齊符 佔位
  1. 糾錯碼 Error Correction Code Level,二維碼中有四種級別的糾錯,這就是爲何二維碼有殘缺還能掃出來,也就是爲何有人在二維碼的中心位置加入圖標。 | 錯誤修正容量 | | | ------ | ------ | | L水平 | 7%的字碼可被修正 |
    | M水平 | 15%的字碼可被修正 |
    | Q水平 | 25%的字碼可被修正 |
    | H水平 | 30%的字碼可被修正 |

數據碼和糾錯碼並不是簡單的排列在一塊兒,而是進行了一系列複雜計算,詳情見連接:二維碼的生成細節和原理網絡


2、二維碼解析流程分析

  1. 定位圖形:首先尋找探測圖形,就是二維碼上的三個方塊。這三個方塊的做用就是無論在哪一個方向掃描圖形,均可以掃到,不信能夠將手機翻轉測試一下。在經過二維碼上的定位圖形和分隔符肯定二維碼信息的圖像。定位圖形肯定二維碼符號中模塊的座標,二維碼中的模塊都是固定的,包括校訂圖形,版本信息,數據和糾錯碼。分隔符呢,就是將探測圖形與二維碼信息圖像分開。
  2. 灰度化二維碼信息像素:手機拍到的圖像都是彩色的,因此拍攝到二維碼也不列外,它也是彩色的,只不過除了黑白,其餘顏色很是淺而已。灰度化是指經過顏色的深淺來識別二維碼,就是說顏色深的按深灰處理,淺色的按淺灰處理,去掉其餘顏色。
  3. 去掉二維碼信息像素的噪點:相機的傳感器在把光線做爲接收信號和輸出過程產生的粗糙像素,這些粗糙的像素是照片中不該該出現的干擾因素。噪點就是指這些粗糙的像素。
  4. 二值化二維碼信息像素:二值化是說將圖像上像素灰度值設置爲0或者255,也就是變成只有黑白兩種顏色。第一步已經灰度化變成只有深灰和淺灰兩種顏色,如今二值化是將深灰變成黑色,淺灰變成白色。爲何變成黑白色呢。由於二維碼圖像實際上是由二進制的0或者1組成,0表明白色,1表明黑色。二維碼在二值化時會將二維碼圖像變成只有黑白色的條碼,而後根據解析公式什麼的(由於像素是0-255之間,要所有轉變成0或者255,估計得通過一些計算,而後0就是0,255變爲1)轉化成二進制信息。
  5. 二維碼譯碼和糾錯:將獲得的二進制信息進行譯碼和糾錯。獲得的二進制信息是版本格式信息、數據和糾錯碼通過必定的編碼方式生成的,因此譯碼是對版本格式信息,數據和糾錯碼進行解碼和對比。糾錯是和譯碼同時進行的,將數據進行糾錯。
  6. 獲取到最終數據。

3、二維碼功能分析

按二維碼類別劃分:測試

1D product 1D industrial 2D
UPC-A Code 39 QR Code
UPC-E Code 93 Data Matrix
EAN-8 Code 128 Aztec (beta)
EAN-13 Codabar PDF 417 (beta)
ITF MaxiCode
RSS-14
RSS-Expanded

按掃碼結果劃分:網站

  • AddressBookResultHandler 通信錄地址
  • CalendarResultHandler 日曆條目
  • EmailAddressResultHandler 電子郵件地址
  • GeoResultHandler 地理座標
  • ISBNResultHandler 圖書編號
  • ProductResultHandler 非圖書產品信息
  • SMSResultHandler 短信內容
  • TelResultHandler 電話號碼
  • TextResultHandler 文本內容
  • URIResultHandler 網絡鏈接
  • WifiResultHandler WiFi接入信息

按業務劃分:編碼

  • 信息獲取(名片、地圖、WIFI密碼、資料)
  • 網站跳轉(跳轉到微博、手機網站、網站)
  • 廣告推送(用戶掃碼,直接瀏覽商家推送的視頻、音頻廣告)
  • 手機電商(用戶掃碼、手機直接購物下單)
  • 防僞溯源(用戶掃碼、便可查看生產地;同時後臺能夠獲取最終消費地)
  • 優惠促銷(用戶掃碼,下載電子優惠券,抽獎)
  • 會員管理(用戶手機上獲取電子會員信息、VIP服務)
  • 手機支付(掃描商品二維碼,經過銀行或第三方支付提供的手機端通道完成支付)
相關文章
相關標籤/搜索