二維碼最大能包含多少信息量?

怎樣計算出來?


日本 Content Idea of Asia 開發的基於 IP 訪問的 PM-Code 可容納 1236 GB 的信息 [0]。

[0] http://ci-a.co.jp/pm/pmeng_lw.html


跟二維碼圖形的大小和顏色都有關係的。一般常見大小的二維碼圖像中,雙色單層(如黑白)的一般是數十K的容量,彩色(24色)單層的能夠達到 1~2MB 的容量。

如 @陳青 所提供的 PM-Code 里那種 256色三層的大型二維碼,甚至能夠達到 1TB 的變態容量。


既然題主問了怎樣計算出來,我就舉個計算例子!

比如說下面這個大號的40L二維碼

40是版本號,號越大,二維碼的「格子」越多,L是這種二維碼的容錯 level,比如L的意思就是即使7%的二維碼被損毀,二維碼的信息還不會丟失)

Wikipedia等網站會告訴我們:40L QR Code可以最多保存4296個字母或數字,這是怎麼得到的呢?

首先,這個二維碼每邊有177個「格子」 (modules,我叫它格子吧,比較直觀),那40L二維碼一共有177×177 = 31329個格子。每個格子可白可黑,也就代表了一個位元組(bit) 。但是這些不是都能隨意使用的!!

比如常見的三個角上的那三個正方形 (finder pattern)就佔了8×8 個格子 (有三個,所以一共「浪費」了192個格子)

http://baike.baidu.com (二維碼自動識別)

(放這個圖大概是因為角上的三個正方塊比較明顯)

像40L那麼大的二維碼浪費的格子還有很多很多:

有46 個大小 5×5 alignment patterns (1150個格子),有272個 timing 格子,有31個format information格子,還有36個version information格子,4個用來表示Mode,13個用來數長度,再加上剛才提到的那196個finder pattern格子,這些功能性的格子一共浪費了1698個格子。

那我們還剩下31329 ? 1698 = 29631 個可用格子。

等等,剛才說的容錯率可不是白來的,為了允許二維碼被撕掉一部分還能被完好無損地識別,我們要再多犧牲750 x 8=6000個糾錯格子。

現在,真正可以用來記錄我們想記錄的東西的格子還有29631 ? 6000 = 23631個(bit)。

一開始我們說了,這個二維碼一共能儲存4296個字母或數字。插一句嘴,2個字母或數字佔11個位元組(格子)。那我們不妨試一試:4296個字元可以分成2148對,每對佔11個位元組,那一共佔23628個位元組(格子)。注意,我們一共才有23631個可用位元組,只剩下3個格子沒用了。

那我們試一試多放一個字母進去(4297),多加一個字元需要多6個位元組 -- 咦,不夠了!

所以,這就是為什麼40L QR Code可以最多保存4296個字母或數字。

其他版本(大小)的 QR Code的容量的計算方式也大同小異,enjoy!


好吧,這個問題其實我不知道答案,但是我還是要扯個幾句。

對於不論是主讀還是被讀二維碼應用,包含大量的信息永遠不是應該追求的目標。

就好比一張紙理論上你可以寫下無數個字,但是關鍵是要便於閱讀。

二維碼也是這樣。

一個信息量大,密密麻麻的二維碼,如果超過了手機的解析度,怎麼顯示用於被讀應用?

如果你拿著手機打開拍碼軟體對著二維碼,來來回回幾分鐘,這個碼還解不出來,誰還會有耐心關注碼後面隱藏著什麼內容?

真正好地二維碼應用,應該是打開攝像頭,對準條碼,嗶-!搞定。

微軟的mstag,雖然不是標準的開放二維碼,但是他們追求的正是這種體驗。

甚至於在攝像頭失焦的狀況下,一樣能解出mstag的內容來。

消費者不會關心二維碼的技術、標準之類的問題,

讓消費者完全沒有使用上的門檻,二維碼才真正能推廣開來。


Qrcode及Datamatrix條碼最多可以存2K左右的信息。但是存這麼多的信息,識別起來就難度很大,建議只把最重要的信息存進去。如果加密就得寫一個加密演算法,與二維碼編碼演算法接起來就行了。建議採用標準演算法與私有演算法相結合的方案。你與軟能動力聯繫一下,或許能給你個更專業的方案。

二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的;在代碼編製上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進位相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理:它具有條碼技術的一些共性:每種碼制有其特定的字符集;每個字元佔有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化點。

分類按原理分

矩陣式二維碼原理

在代碼編製上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」比特流的概念,使用若干個與二進位相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。在許多種類的二維條碼中,常用的碼制有:Data Matrix,MaxiCode, Aztec,QR Code, Vericode,PDF417,Ultracode,Code 49,Code 16K等,QR Code碼是1994年由日本DW公司發明。QR來自英文「Quick Response」的縮寫,即快速反應的意思,源自發明者希望QR碼可讓其內容快速被解碼。QR碼最常見於日本、韓國;並為目前日本最流行的二維空間條碼。但二維碼的安全性也正備受挑戰,帶有惡意軟體和病毒正成為二維碼普及道路上的絆腳石。發展與防範二維碼的濫用正成為一個亟待解決的問題。

每種碼制有其特定的字符集;每個字元佔有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能及處理圖形旋轉變化等特點。

二維碼是一種比一維碼更高級的條碼格式。一維碼只能在一個方向(一般是水平方向)上表達信息,而二維碼在水平和垂直方向都可以存儲信息。一維碼只能由數字和字母組成,而二維碼能存儲漢字、數字和圖片等信息,因此二維碼的應用領域要廣得多。

二維條碼/二維碼可以分為堆疊式/行排式二維條碼和矩陣式二維條碼。 堆疊式/行排式二維條碼形態上是由多行短截的一維條碼堆疊而成;矩陣式二維條碼以矩陣的形式組成,在矩陣相應元素位置上用「點」表示二進位「1」, 用「空」表示二進位「0」,「點」和「空」的排列組成代碼。[2]二維碼的原理可以從矩陣式二維碼的原理和行列式二維碼的原理來講述。

堆疊式/行排式

堆疊式/行排式二維條碼又稱堆積式

常見二維碼

二維條碼或層排式二維條碼),其編碼原理是建立在一維條碼基礎之上,按需要堆積成二行或多行。它在編碼設計、校驗原理、識讀方式等方面繼承了一維條碼的一些特點,識讀設備與條碼印刷與一維條碼技術兼容。但由於行數的增加,需要對行進行判定,其解碼演算法與軟體也不完全相同於一維條碼。有代表性的行排式二維條碼有:Code 16K、Code 49、PDF417、MicroPDF417 等。

矩陣式二維碼

矩陣式二維條碼(又稱棋盤式二維

二維碼結構

條碼)它是在一個矩形空間通過黑、白像素在矩陣中的不同分布進行編碼。在矩陣相應元素位置上,用點(方點、圓點或其他形狀)的出現表示二進位「1」,點的不出現表示二進位的「0」,點的排列組合確定了矩陣式二維條碼所代表的意義。矩陣式二維條碼是建立在計算機圖像處理技術、組合編碼原理等基礎上的一種新型圖形符號自動識讀處理碼制。具有代表性的矩陣式二維條碼有:Code One、MaxiCode、QR Code、 Data Matrix、Han Xin Code、Grid Matrix 等。

常用的碼制有:PDF417二維條碼、Datamatrix二維條碼、QR Code、Code 49、Code 16K、Code one等,除了這些常見的二維條碼之外,還有Vericode條碼、Maxicode條碼、CP條碼、Codablock F條碼、田字碼、 Ultracode條碼及Aztec條碼。

按業務分

二維碼應用根據業務形態不同可分為被讀類和主讀類兩大類。

被讀類業務

平台將二維碼通過彩信發到用戶手機上,用戶持手機到現場,通過二維碼機具掃描手機進行內容識別。應用方將業務信息加密、編製成二維碼圖像後,通過簡訊或彩信的方式將二維碼發送至用戶的移動終端上,用戶使用時通過設在服務網點的專用識讀設備對移動終端上的二維碼圖像進行識讀認證,作為交易或身份識別的憑證來支撐各種應用。

主讀類業務

用戶在手機上安裝二維碼客戶端,使用手機拍攝並識別媒體、報紙等上面印刷的二維碼圖片,獲取二維碼所存儲內容並觸發相關應用。用戶利用手機拍攝包含特定信息的二維碼圖像,通過手機客戶端軟體進行解碼後觸發手機上網、名片識讀、撥打電話等多種關聯操作,以此為用戶提供各類信息服務。

4區別

多行組成的條形碼,不需要連接一個資料庫,本身可存儲大量數據,應用於:醫院、駕駛證、物料管理、貨物運輸,當條形碼受一定破壞時,錯誤糾正能使條形碼能正確解碼二維碼。它是一個多行、連續性、可變長、包含大量數據的符號標識。每個條形碼有3 - 90行,每一行有一個起始部分、數據部分、終止部分。它的字符集包括所有128個字元,最大數據含量是1850個字元。

一維條形碼只是在一個方向(一般是水平方向)表達信息,而在垂直方向則不表達任何信息,其一定的高度通常是為了便於閱讀器的對準。

一維條形碼的應用可以提高信息錄入的速度,減少差錯率,但是一維條形碼也存在一些不足之處:

數據容量較小: 30個字元左右,只能包含字母和數字;

條形碼尺寸相對較大(空間利用率較低);

條形碼遭到損壞後便不能閱讀;

在水平和垂直方向的二維空間存儲信息的條形碼, 稱為二維條形碼(dimensional bar code)。

5相關發明PDF417碼

PDF417碼是由留美華人王寅敬(音)博士發明的。PDF是取英文Portable Data File三個單詞的首字母的縮寫,意為「便攜數據文件」。因為組成條形碼的每一符號字元都是由4個條和4個空構成,如果將組成條形碼的最窄條或空稱為一個模塊,則上述的4個條和4個空的總模塊數一定為17,所以稱417碼或PDF417碼。[3]

1. 信息容量大

PDF417碼除可以表示字母、數字、ASCII字元外,還能表達二進位數。為了使得編碼更加緊湊,提高信息密度,PDF417在編碼時有三種格式:

擴展的字母數字壓縮格式 可容納1850 個字元;

二進位/ASCII格式 可容納1108 個位元組;

數字壓縮格式 可容納2710 個數字。

2. 錯誤糾正能力

一維條形碼通常具有校驗功能以防止錯讀,一旦條形碼發生污損將被拒讀。而二維條形碼不僅能防止錯誤,而且能糾正錯誤,即使條形碼部分損壞,也能將正確的信息還原出來。

3. 印製要求不高

普通列印設備均可列印,傳真件也能閱讀。

4. 可用多種閱讀設備閱讀

PDF417碼可用帶光柵的激光閱讀器,線性及面掃描的圖像式閱讀器閱讀。

5. 尺寸可調以適應不同的列印空間

6. 碼制公開已形成國際標準,我國也已制定了417碼的國際標準。

變形

PDF417還有幾種變形的碼制形式:

PDF417截短碼

在相對「乾淨」的環境中,條形碼損壞的可能性很小,則可將右邊的行指示符省略並減少終止符。

PDF417微碼

進一步縮減的PDF碼。

宏PDF417碼

當文件內容太長,無法用一個PDF417碼錶示時,可用包含多個(1~99999個)條形碼分塊的宏PDF417碼來表示。


多行組成的條形碼,不需要連接一個資料庫,本身可存儲大量數據,應用於:醫院、駕駛證、物料管理、貨物運輸,當條形碼受一定破壞時,錯誤糾正能使條形碼能正確解碼二維碼。

二維碼是一個多行、連續性、可變長、包含大量數據的符號標識。每個條形碼有3 - 90行,每一行有一個起始部分、數據部分、終止部分。它的字符集包括所有128個字元,可容納多達1850個字元或2710個數字或1108個位元組,或500多個漢字,比普通條碼信息容量約高几十倍。


挖出很久之前的帖子,更新一下最新的技術發展趨勢,為後面搜到這個帖子的人同步下前沿

其實二維碼本身能保存的信息實在是有限,目前最廣泛的用途其實是當做用戶交互的一個便捷渠道。

相比較而言,我還是認為不應該丟棄二維碼的存儲特性。最近的一款產品:多信語音便簽大家可以關注下,在易迅、京東上都可以看到。

原理其實很簡單,二維碼中保存一個網址,該網址直接對應某個雲存儲空間。通過這樣的方式,用戶用手機掃描二維碼,就可以從這個空間中讀取和保存內容。現在移動網路便捷我就不用說了,基本上能掃二維碼的手機都能上網。這種方式相當於從另外一個層面大大擴展了二維碼的存儲內容。

所以二維碼本身能存多少內容也許在工業領域很關鍵,但在個人消費領域並不是一個很關鍵的問題。


這個要看具體的二維碼類型。以使用率非常高的QR為例,最多存儲3K左右的數據。


字元越多越密集,太密集手機就識別不出來了。理論值肯定是有。


推薦閱讀:

QR 二維碼在不影響掃碼的情況下,哪些部分可以刪除?

TAG:二維碼 | 比價 | QRCode |