回覆列表
-
1 # 稻客說
-
2 # 知否之家
理論上可以實際上很難。
二維碼說白了就是一個方格平面上的點位讀取。
先在平面上畫出位置確定、校正圖形和版本資訊等內容
然後將資訊編碼為二進位制,填入資料區
在理解原理且手動進行編碼換算的情況下,你可以手動計算出一個精確的二維碼,畢竟一個最簡單的二維碼只有21*21的大小,計算工作量並不大。只要事先打好格子一個個格子填黑或留白,完成這個二維碼生成過程並不是非常難的事情。如果是為了學習並融會貫通二維碼的相關技術這麼做也無可厚非。如果是為了其他原因比如挑戰自我的話,就有點無聊了。
二維碼是個由黑白小方塊組成的神奇圖案,已然成為我們生活當中非常重要的一部分。收錢付款、APP互加好友、帳號登陸都需要掃一掃二維碼。
為什麼二維碼無論是畫的還是刻的都能掃出來東西?這二維碼中的黑白小方塊兒究竟有何神奇之處,為什麼隨便一掃總能帶我們所需的東西,而且無論是畫出來、印刷打印出來或刻出來都掃出來東西?
首先,我們需要了解二維碼的原理。
通過上方二維碼構成圖,我們可以看到,二維碼圖案就是由三個大方塊(定點陣圖案)和碼元組成。
QR碼從360°任一方向均可快速讀取。其奧祕就在於QR碼中的3處定點陣圖案,可以幫助QR碼不受背景樣式的影響,實現快速穩定的讀取。
無論二維碼是通過列印、印刷、手繪或是雕刻的方式製作,無論使用的是什麼材質, 只要碼元清晰,都能快速識別。二維碼能否識別和容錯率有關,與製作材質無關。
什麼是容錯率:容錯率也叫糾錯率,就是指二維碼可以被遮擋後仍能被正常掃描,而這個能被遮擋的最大面積就是容錯率。 基本概念:最常見的QR二維碼,用的是裡德-所羅門碼(RS)來做糾錯。分有幾級,糾錯級別越高,整體需要攜帶的資訊越多:L級可糾正約7%錯誤、M級別可糾正約15%錯誤、Q級別可糾正約25%錯誤、H級別可糾正約30%錯誤。RS碼原理比較複雜,整體基於“任意k個確定點可表示一個階數至少為k-1的多項式”,實際上傳送超過k個點,就算中間有一些錯誤,也能通過數學原理反推出最初的多項式,從而獲得資訊。並不是所有位置都可以缺損,像最明顯的那三個角上的方框,直接影響初始定位。中間零散的部分是內容編碼,可以容忍缺損。由於調整糾錯率的時候,二維碼的圖案分佈也要重新調整,所以每次調整糾錯率,二維碼的圖案都會發生變化。簡而言之,二維碼就是將我們能看懂的文字語言,以機器語言的形式儲存了起來。其中黑色小方塊代表的是1,白色小方塊代表的是0,黑白相間的圖案其實就是一串編碼,掃碼的過程就是翻譯這些編碼的過程。
所以,二維碼怎麼印,印在哪裡不重要,重要只要黑白相間的圖案沒有缺失就能識別。