免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

標題: QR編碼 [打印本頁]

作者: mhfo    時間: 2014-3-18 08:39     標題: QR編碼

一、什麼是QR碼
QR碼屬於矩陣式二維碼中的一個種類,由DENSO(日本電裝)公司開發,由JIS和ISO將其標準化。QR碼的樣子其實在很多場合已經能夠被看到了,我這還是貼個圖展示一下:
這個圖如果被正確解碼,應該看到我的名字和郵箱。
二、QR碼的特點
說到QR碼的特點,一是高速讀取(QR就是取自“Quick Response”的首字母),對讀取速度的體驗源自於我手機上的一個軟體,象上面貼出的碼圖,通過攝像頭從拍攝到解碼到顯示內容也就三秒左右,對攝像的角度也沒有什麼要求;
二是高容量、高密度;理論上內容經過壓縮處理後可以存7089個數位,4296 個字母和數位混合字元,2953個8位元位元組資料,1817個漢字;
三是支持糾錯處理;糾錯處理相對複雜,目前我還沒有深入瞭解,按照QR碼的標準文檔說明,QR碼的糾錯分為4個級別,分別是:
•        level L : 最大 7% 的錯誤能夠被糾正;
•        level M : 最大 15% 的錯誤能夠被糾正;
•        level Q : 最大 25% 的錯誤能夠被糾正;
•        level H : 最大 30% 的錯誤能夠被糾正;
四是結構化;看似無規則的圖形,其實對區域有嚴格的定義,下圖就是一個模式2、版本1的QR圖結構(關於QR碼的"模式"、"版本"將在後面進行介紹):

在上圖21*21的矩陣中,黑白的區域在QR碼規範中被指定為固定的位置,稱為尋像圖形(finder pattern) 和 定位圖形(timing pattern)。尋像圖形和定位圖形用來説明解碼程式確定圖形中具體符號的座標。
黃色的區域用來保存被編碼的資料內容以及糾錯資訊碼。
藍色的區域,用來標識糾錯的級別(也就是Level L到Level H)和所謂的"Mask pattern",這個區域被稱為“格式化資訊”(format information)。
五是擴展能力。QR碼的Structure Append特點,使一個QR碼可以分解成多個QR碼,反之,也可以將多個QR碼的資料組合到一個QR碼中來 。


三、QR碼的模式和版本
前面提到過QR碼的模式(Model)和版本(Version)。QR碼分為Model1和Model2兩種模式,Model1是對QR的初始定義,Model2是對Model1的擴展,目前使用較為普遍的是Model2,本文的所有說明也僅用於Model2。
QR圖的大小(size)被定義為版本(Version),版本號從1到40。版本1就是一個21*21的矩陣,每增加一個版本號,矩陣的大小就增加4個模組(Module),因此,版本40就是一個177*177的矩陣。(版本越高,意味著存儲的內容越多,糾錯能力也越強)。
三、QR碼支援的編碼內容
QR碼支援編碼的內容包括純數位、數位和字元混合編碼、8位元位元組碼和包含漢字在內的多位元組字元。其中:
數字:每三個為一組壓縮成10bit。
字母數位混合:每兩個為一組,壓縮成11bit。                                   
8bit位元組資料:無壓縮直接保存。
多位元組字元:每一個字元被壓縮成13bit。


-----------------------------------------------
可能滿多人有看到今天網路上有不少人分享用 Google Docs 的試算表產生 QR code。

http://lifeofjordi.wordpress.com ... -docs-and-qr-codes/
JORDIORLANDO 在這篇文章分享了他如何用 Google Docs 試算表產生及維護 QR code
,其原理是在試算表中應用了 Google Chart API。

簡單來說:

https://chart.googleapis.com/cha ... =http://google.com/
這是 Google Chart API 的 Infographics 的用法。Google Chart API 的
Infographics 已經被列入「待棄用」了,不過預計棄用時間是 2015 年 4 月,在這
之前都還可以用,所以就盡情利用吧。該篇文章就是在試算表內插入了這種語法,來
製造 QR code。

chs:產生的 QR code 圖片的像素
cht:產生的圖片的格式。因為要產生 QR code,所以固定為 qr
chl:這是要轉化成 QR code 的文字的內容。

這麼單純,自己手動就好啦!何必還要用到試算表?作者就是將 chl 後面的資訊
與試算表其他單元格的內容結合,例如

=image("https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=" & A1 & "")

變成這樣。將這字串貼在 A2,如此一來當 A1 內容變化時,A2 就會自動產生新的
QR code 圖形。

如此一來,就可以自行產生及維護 QR code,不必再尋找網路服務來處理這種需求。

由於 Google Chart API 後面使用的是 UTF-8,瞭解上述的用法後,就可以進入進階
應用。

像 JORDIORLANDO 的文章中用的是

=image("https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl=BEGIN:VCARD%0AN:"
& A2 & "%20" & B2 & "%0ATEL;CELL:" & C2 & "%0AEMAIL:" & D2 & "%0AEND:VCARD")

將 chl 的部分轉成文字的話就是

BEGIN:VCARD
N: A2 B2
TEL;CELL: C2
EMAIL: D2
END:VCARD

這是 vCARD 的格式。將這個格式轉成 QR code 後,用手機一讀取就會出現
BUSINESS CARD,然後就可以加入聯絡人。

利用 Google Docs 試算表加上 Google Chart API,就可以自己產生﹑維護 QR code。


如果不嫌棄,小弟寫了更詳細的說明:
http://duo-anything.blogspot.tw/ ... e-docs-qr-code.html




歡迎光臨 魚骨頭的雲端圖書館 (http://mhfo.hotbbs.info/) Powered by Discuz! 7.0.0