最近比較流行二維碼,自己百度了一下發現有一個很不錯的實現方法使用谷歌接口http://chart.apis.google.com(gg的圖標api接口)
QRcode是二維碼的一種。QRcode可以存儲最多4296個字母數字類型的任意文本。這些文本可以是任何內容,例如,網址、聯系信息、電話號碼(具體科查看二維碼數據格式)。QR code存儲的信息可以被安裝有適當軟件的光學設備讀取。這種設備既可以是專用的QR code讀取器也可以是手機。
參數解釋
http://chart.apis.google.com/chart? : 調用 Google 圖表 API
http://chart.apis.google.com/chart? : 調用 Google 圖表 API
- cht=qr
這個是必需的,告訴 API ,你需要生成的是二維碼。 - chs=<width>x<height>
這個同樣是必需的,告訴 API ,你需要生成的二維碼的尺寸。 - chl=<data>
這個還是必需的,用來告訴 API 二維碼所包含的信息。可以是數字、字符數字、字符、二進制信息、漢字。不能混合數據類型。數據必須經過UTF-8 URL-encoded。如果需要傳遞的信息超過2K個字節,請使用POST方式。 - choe=<output_encoding>
終於來了個不是必須的,這個是用來聲明生成的二維碼所包含信息的編碼,默認是 UTF-8 ;其他可選編碼是 Shift_JIS 、 ISO-8859-1 - chld=<error_correction_level>|<margin>
可選 糾錯等級。QR碼支持四個等級的糾錯,用來恢復丟失的、讀錯的、模糊的、數據。下面是可選的值:L-(默認)可以識別已損失7%的數據;M-可以識別已損失15%的數據;Q-可以識別已損失25%的數據;H-可以識別已損失30%的數據。margin 是指生成的二維碼離圖片邊框的距離。
QR碼是方形的,有相同的長和寬。QR碼的大小是固定的:從21到177的長/寬,每次遞增4個像素點。每個配置被稱為一個等級。長和寬越大,存儲的信息就越多。下面是版本摘要:
- 等級為1的QR碼長和寬分別為21個像素,最多可以存儲25個字母數字和字符。
- 等級為2的QR碼長和寬分別為25個像素,最多可以存儲47個字母數字和字符。
- …以此類推 。
Chart API會根據你將存儲的信息的大小來決定使用哪個等級的QR碼。最棒的QR碼閱讀器可以讀取等級為40的QR碼中存儲的信息。然而通常來說移動設備最多可以讀取等級為4的QR碼中存儲的信息。
以下是一個簡單的測試:
輸入以下信息到IE地址欄:
http://chart.apis.google.com/chart?cht=qr&chs=100x100&chl=php淮北
就可以得到一個二維碼:
下面使用php做成web版的
很貼心的是這個api支持get和post方式提交
關於VCard!!!相關介紹如下..
http://baike.baidu.com/view/495045.htm
<?php $vname = $_POST['name']; $vtel = $_POST['tel']; //判斷有沒有提交名片信息,要不要調用接口顯示 if($vname&&$vtel){ $chl = "BEGIN:VCARD\nVERSION:3.0". //vcard頭信息 "\nFN:$vname". "\nTEL:$vtel". "\nEND:VCARD"; //vcard尾信息 echo "<img src='http://chart.apis.google.com/chart?cht=qr&&chs=300×300&chl=".urlencode($chl)."' />"; //要對內容urlencode() } ?> <form method=‘POST’> 姓名:<input type='text' name='name' /><br/> 電話:<input type='text' name='tel' /><br/> <input type='submit' value='create QR'> </form>
需要注意的是,不要忘記文件要用utf-8編碼,且聲明META也是采用utf8,這是api的要求
<metahttp-equiv="content-type"content="text/html;charset=utf-8"/>
