免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

QR CODE

參考


Google Chart API 是一組能讓使用者只透過 URL 傳遞參數就能快速產生各種圖表的 API。可產生的圖片類型包括線形圖、長條圖與圓餅圖,同時也能指定的每種圖片屬性,例如大小、色彩與標籤等。

在使用 Google Chart API 時,使用者只需要指定要產生那種圖表跟相關的資料數據透過 URL 的方式呼叫就可以了。使用時的格式應為:

[url=]檢視原始碼[/url] JavaScript
1http://chart.apis.google.com/chart?<parameter 1>&<parameter 2>&<parameter n>

只要把 URL 加在 IMG 的 src 屬性中就能顯示出相對應的圖表圖片(PNG)。

此次要介紹的是屬於線形圖之一的-QR碼(QRCode)。QR 是英文「Quick Response」的縮寫,是二維條碼的一種,1994 年由日本 Denso-Wave 公司發明。其它更多的解釋可以參考 維基百科 - QR碼

在稍微了解什麼是QR碼之後,我們就來看一下怎樣使用 Google Chart API 來產生一張QR碼圖片。

它的格式為:

[url=]檢視原始碼[/url] JavaScript
1http://chart.apis.google.com/chart?cht=qr&chl={內容}&chs={寬X高}

假設我要把 abgne.tw 內容變成QR碼圖片的話,就可以把 IMG 的 src 設定成:

[url=]檢視原始碼[/url] JavaScript
1http://chart.apis.google.com/chart?cht=qr&chl=abgne.tw&chs=120x120



是不是很簡單呢?!不過內容的部份是需要 UTF8 的 URL 編碼文字,例如空格就要寫成 %20。因此若沒經過編碼的話,中文可能會無法順利的產生。

所以,我們可用
的 encodeURIComponent() 函式來幫我們做編碼的動作,同時寫成函式也較方便使用(雖然只有幾行):

[url=]檢視原始碼[/url] JavaScript
12345678function QRCode(content, width, height){        // 預設寬高為 120x120        width = !!width ? width : 120 ;        height = !!height ? height : 120;        // 編碼        content = encodeURIComponent(content);    return 'http://chart.apis.google.com/chart?cht=qr&chl=' + content + '&chs=' + width + 'x' + height;}

使用時只要把內容跟寬高傳給 QRCode() 函式就可以了,它就會把編碼後且組出的 URL 回傳給我們來使用:

[url=]檢視原始碼[/url] JavaScript
12345678910111213141516171819202122232425<script type="text/javascript">        function QRCode(content, width, height){                // 預設寬高為 120x120                width = !!width ? width : 120 ;                height = !!height ? height : 120;                // 編碼                content = encodeURIComponent(content);                return 'http://chart.apis.google.com/chart?cht=qr&chl=' + content + '&chs=' + width + 'x' + height;        }         window.onload = function(){                document.getElementById('qrcode').onclick = function(){                        var msg = document.getElementById('content');                        var imgSrc = QRCode(msg.innerHTML, 240, 240);                        msg.innerHTML = '<img src="' + imgSrc + '" alt="" />';                };        };</script> <body>        <input type="button" value="QRCode" id="qrcode" />        <div id="content">                Google Chart API 是一組能讓使用者只透過 URL 傳遞參數就能快速產生各種圖表的 API。可產生的圖片類型包括線形圖、長條圖與圓餅圖,同時也能指定的每種圖片屬性,例如大小、色彩與標籤等。        </div></body>

關於其它更進階的QR碼參數可以參考:Google Chart API - QR碼。如果要把QR碼圖片解碼內容的話,可以把圖片傳到 ZXing Decoder Online 來做解碼的動作。

------------------------------------------------------------------------------------

二維條碼演進與QR Code之技術特性


條碼已成為廣為流行,無論在處理速度(decode/encode)、精度和優越的功能特性。條碼成為流行,其方便普遍認可,市場開始呼籲研發能夠儲存更多的資訊,更多資料類型,而且可以印刷在較小的空間。

因此,進行了各種努力,以增加資訊量存儲的條形碼,例如增加數位條碼或鋪設了多種條碼。然而,透過技術的改良,無論印刷成本、使用便利性、快速反應都臻至商業使用之效益,很快的,二維條碼變成市場的主流,同時應用範圍越來越廣,底下我們將從二維條碼開始,一系列的介紹二維條碼之原理演進、QR Code之商業應用、二維條碼的未來,來推導下一代的條碼可能的開發方式與更廣泛的應用。



然而,比起其他儲存方式(如RFID等),條碼擁有以下特色優勢:

1.
能離線儲存資料:不同於一般資料儲存必須有Device或者線上遠端讀取資料,Bar Code能直接儲存資料於條碼中。

2.
成本低廉:Bar Code能於一般品質之紙張或幾乎所有材質之包裝上,不需要太高的印刷品質也不需要特定的列印界質,因此能夠方便大量複製、擴散,乃因其成本低廉。

3.
處理速度佳且損毀能回溯:條碼因應於生活中,能夠快速編碼、解碼,頗為符合商業用途中的使用便利性需求,同時因應可能的損毀,多具備損毀時資料回復的功能(Error correction/data restoration)。



條碼發展過程中,增加儲存量方面的需求是不可避免的,而二維條碼的演進如下:

1.
Multiple bar code layout:利用多個一維條碼來增加資料儲存量,不過,很顯然的,這是只是以個數來擴大儲存量,若以商業角度考量,相對的構圖面積與印刷成本也呈倍數增加,因此這種方是沒多久即面臨淘汰。

2.    2D Code with stacked bar codes (stacked bar code type):利用多個一維條碼以堆疊方式減少面積,雖然技術效能大有改善,但是在縱切向方面仍屬一維的方式,仍未臻理想而有很大的改善空間。

3.    2D Code (matrix type):這個架構,無論縱向橫向,均採取演算法之堆疊方式處理,並能真正達到在不增加面積與解析度之狀況下,相對於一維條碼而產生巨量效益。


關於現有的二維條碼,目前已定義完整且制訂標準規格,並開放使用的有以下幾種:





由以上表列得知:除了QR Code為日本開發外,其餘均出自於美國,特定於美洲地區局部使用。
然而,就儲存量而言,表現最好的是QR Code,除了大儲存量外,同時QR Code也兼具較小的輸出、快速反應(decode)等商業應用特性。


「QR」代表的意思是Quick Response(快速回應),由日本的Denso-Wave公司發明,在1999年公布了符合日本當地的「日本工業規格JIS」標準;隨後,2000年 獲得國際標準組織ISO的認可。ISO/IEC 18004的標準成立之後,QR Code現在已經成為全球標準的二維條碼規格。


QR Code與一維條碼之不同處在於在縱向方面,提供了儲存資料之方式(一維條碼只有橫向),這種儲存方式是透過演算法的技術給予巨量的改善,雖然QR Code以自由軟體方式,開放標準規範提供個資訊服務業者使用,但是相關演算法技術仍屬該公司所有,並未對外公佈。




QR Code之技術特色
高儲存量

開放式標準的QR Code到底有多厲害呢?能夠記錄的數字字元就有7089個,或是4296個英文字母。光是英文字母的記憶能力,就可以儲存一段不小的資訊。想想看,過去寫一封英文信可能要用一張A4紙,現在只要以QR Code編碼印在明信片上。記錄英文、數字也沒什麼了不起,QR Code還能儲存以Shift-JIS編碼的日文漢字與片假名;至於中文字呢?藉由列為全世界共通標準之萬國碼Unicode(UTF-8),也能存放 984個字。



小尺寸的輸出(Small Printout Size)
由於二維碼信息進行橫向和縱向,QR碼能夠編碼是相同的數據量大約十分之一的空間傳統的條形碼。 (對於較小的打印尺寸,微型QR碼可用。)
針對日本標規,QR Code的編碼(encode)具備JIS 漢字字元Lever I/Lever II的能力。譬如說在日本,一個漢字或平(片)假名的編碼須要13個位元(bits),而QR Code比起其他二維條碼能夠節省超過20%的資料需求量,意即:QR Code在漢字編碼(encode)的表現是非常優於其他的二維條碼。


抗損表現(Dirt and Damage Resistant)
QR碼的糾錯能力(error correction)。數據可以被恢復的象徵,即使是部分臟或損壞,最多30%的字碼可以恢復,亦即即使損毀了30%,能可透過回算技術回復資料。
* 1:一個碼字是一個單位,構建數據區。QR碼,一碼等於 8位。
* 2:資料恢復是否完全,在於其污垢或損壞是否於數據擷取目標範圍。



可360度讀取
QR碼是能夠 360度(全向),高速讀取。 QR碼是透過如下圖之小正方形完成方位定位。這些小正方型主要是檢測保證穩定的高速讀取,規避的負面影響的背景干擾。





結構化的彈性應用
QR碼可以被分成多個數據區。相反,信息存儲在多個二維碼符號可以被重建為一個數據符號。

一個數據符號可以分為 16個符號,使印刷在一個狹窄的區域。





下次,我們將介紹QR Code的演進規範以及編碼器(encoder)/解碼器(decoder)製作原理。



返回列表