天天看點

二維碼登入原理及生成與解析

  這幾天在研究二維碼的掃碼登入。初來乍到,還有好多東西不懂。在網上看到有人寫了一些通過QRCode或者Zxing實作二維碼的生成和解碼。一時興起,決定自己親手試一試。本人是通過QRCode實作的,下面具體的說一下。

  很重要的一部分知識:二維碼一共有 40 個尺寸。官方叫版本 Version。Version 1 是 21 x 21 的矩陣,Version 2 是 25 x 25 的矩陣,Version 3 是 29 的尺寸,每增加一個 version,就會增加 4 的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高 Version 40,(40-1)*4+21 = 177,是以最高是 177 x 177 的正方形。

  

二維碼登入原理及生成與解析
二維碼登入原理及生成與解析
二維碼登入原理及生成與解析

生成二維碼(不含有logo)                                                   生成二維碼(帶有logo)

二維碼登入原理及生成與解析
二維碼登入原理及生成與解析

對應的解碼

  工具很簡單,但是很實用。界面還可以美化,功能還可以加強,初心隻是為了練習一下二維碼的生成和解析。

二維碼登入原理及生成與解析
二維碼登入原理及生成與解析

View Code

  對于二維碼圖檔大小還是不會計算,如果有人看到這裡,友善的話可以告訴小弟一聲。我這裡的這個值(235)是通過設定好QrcodeVersion(版本15),以及繪制圖像時偏移量pixoff=2和black區域的size=3,最終生成圖檔後,将圖檔通過ps打開,然後确定圖檔的尺寸資訊。

  還有就是中間的logo不要過大,否則會導緻QRCode解析出錯,但是手機掃碼不一定會出錯。感覺手機掃碼解析比QRCode解析能力強。

  一般設定version就好了,網上好多都是7或者8,我嘗試下更大的值,15的話二維碼看起來很密集。

  繪制black區域的時候要設定偏移量,要不然可能導緻二維碼識别出錯。 black區域的大小根據實際情況來就好。

二維碼登入原理及生成與解析

   按照自己的了解畫的,結合上圖,看一下代碼吧。

  使用者請求掃碼方式登入,背景生成二維碼,将uuid和二維碼通路位址傳給使用者。

  使用者獲得uuid和二維碼之後,請求背景的長連接配接(攜帶uuid),不斷檢測uuid是否有對應的使用者資訊,如果有則轉到登入子產品(攜帶登入資訊)。

  使用者通過手機掃碼之後,在手機端輸入使用者資訊,然後進行驗證(攜帶uuid),背景更新uuid對應的使用者資訊,以便長連接配接可以檢測到使用者登入資訊。