==============================================PHP使用方法==================================================
1、用google 開放API 完成
[php]
$urlToEncode="name:劉昕明,phone:18792448443";
generateQRfromGoogle($urlToEncode);
/**
* google api 二維碼產生【QRcode可以儲存最多4296個字母數字類型的任意文本,具體可以查看二維碼資料格式】
* @param string $chl 二維碼包含的資訊,可以是數字、字元、二進位資訊、漢字。不能混合資料類型,資料必須經過UTF-8 URL-encoded.如果需要傳遞的資訊超過2K個位元組,請使用POST方式
* @param int $widhtHeight 產生二維碼的尺寸設定
* @param string $EC_level 可選錯誤修正層級,QR碼支援四個等級錯誤修正,用來恢複丟失的、讀錯的、模糊的、資料。
* L-預設:可以識別已損失的7%的資料
* M-可以識別已損失15%的資料
* Q-可以識別已損失25%的資料
* H-可以識別已損失30%的資料
* @param int $margin 產生的二維碼離圖片邊框的距離
*/
function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')
{
$chl = urlencode($chl);
echo '';
}
更詳細的可參看百度文庫:http://wenku.baidu.com/view/b2a6ffc60c22590102029dae.html
2、php類庫PHP QR Code
PHP QR Code is open source (LGPL) library for generating QR Code,
2-dimensional barcode. Based on libqrencode C library,
provides API for creating QR Code barcode images (PNG, JPEG thanks to GD2).
Implemented purely in PHP, with no external dependencies (except GD2 if needed).
PS:由於時間關係,本人只測試了 google 開放API 正常。其他的可以自己測試。
===============================================瞭解下二維碼的原理==================================================
二維碼(2-dimensional bar code),是用某種特定的幾何圖形按照一定規律在平面分布的黑白相間的圖形記錄資料符合資訊的。
常用到的碼制有:Data Matrix , Maxi Code , Aztec , QR Code , Vericode , PDF417 , Ultracode , Code 49 , Code 16K等
①:堆疊式/行排式二維條碼,如,Code 16K、Code 49、PDF417(如)等
②:矩陣式二維碼,最流行莫過於QR CODE
二維碼儲存的資料量更大;可以包含數字、字元,及中文文本等混合內容;有一定的容錯性(在部分損壞以後可以正常讀取);空間利用率高等。
③:QR CODE 介紹
如時一個qrcode的基本結構,其中:
位置探測圖形、位置探測圖形分隔字元、定位元影像形:用於對二維碼的定位,對每個QR碼來說,位置都是固定存在的,只是大小規格會有所差異;
校正圖形:規格確定,校正圖形的數量和位置也就確定了;
格式資訊:表示改二維碼的錯誤修正層級,分為L、M、Q、H;
版本資訊:即二維碼的規格,QR碼符號共有40種規格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號比前一版本 每邊增加4個模組。
資料和錯誤修正碼字:實際儲存的二維碼資訊,和錯誤修正碼字(用於修正二維碼損壞帶來的錯誤)。
簡要的編碼過程:
1. 資料分析:確定編碼的字元類型,按相應的字元集轉換成符號字元; 選擇錯誤修正等級,在規格一定的條件下,錯誤修正等級越高其真實資料的容量越小。
2. 資料編碼:將資料字元轉換為位流,每8位一個碼字,整體構成一個資料的碼字序列。其實知道這個資料碼字序列就知道了二維碼的資料內容。
資料可以按照一種模式進行編碼,以便進行更高效的解碼,例如:對資料:01234567編碼(版本1-H),
1)分組:012 345 67
2)轉成二進位:012→0000001100
345→0101011001
67 →1000011
3)轉成序列:0000001100 0101011001 1000011
4)字元數 轉成二進位:8→0000001000
5)加入模式指示符(數字)0001:0001 0000001000 0000001100 0101011001 1000011
對於字母、中文、日文等只是分組的方式、模式等內容有所區別。基本方法是一致的
3. 錯誤修正編碼:按需要將上面的碼字序列分塊,並根據錯誤修正等級和分塊的碼字,產生錯誤修正碼字,並把錯誤修正碼字加入到資料碼字序列後面,成為一個新的序列。
在二維碼規格和錯誤修正等級確定的情況下,其實它所能容納的碼字總數和錯誤修正碼字數也就確定了,比如:版本10,錯誤修正等級時H時,總共能容納346個碼字,其中224個錯誤修正碼字。
就是說二維碼地區中大約1/3的碼字時冗餘的。對於這224個錯誤修正碼字,它能夠糾正112個替代錯誤(如黑白顛倒)或者224個據讀錯誤(無法讀到或者無法解碼),
這樣錯誤修正容量為:112/346=32.4%
4. 構造最終資料資訊:在規格確定的條件下,將上面產生的序列按次序放如分塊中
按規定把資料分塊,然後對每一塊進行計算,得出相應的錯誤修正碼字區塊,把錯誤修正碼字區塊 按順序構成一個序列,添加到原先的資料碼字序列後面。
如:D1, D12, D23, D35, D2, D13, D24, D36, ... D11, D22, D33, D45, D34, D46, E1, E23,E45, E67, E2, E24, E46, E68,...
構造矩陣:將探測圖形、分隔字元、定位元影像形、校正圖形和碼字模組放入矩陣中。
把上面的完整序列填充到相應規格的二維碼矩陣的地區中
6. 掩摸:將掩摸圖形用於符號的編碼地區,使得二維碼圖形中的深色和淺色(黑色和白色)地區能夠比率最優的分布。
一個演算法,不研究了,有興趣的同學可以繼續。
7. 格式和版本資訊:產生格式和版本資訊放入相應地區內。
版本7-40都包含了版本資訊,沒有版本資訊的全為0。二維碼上兩個位置包含了版本資訊,它們是冗餘的。
版本資訊共18位,6X3的矩陣,其中6位時資料為,如版本號碼8,資料位元的資訊時 001000,後面的12位是錯誤修正位。
http://www.bkjia.com/PHPjc/478001.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478001.htmlTechArticle==============================================PHP使用方法================================================== 1、用google 開放API 完成 [php] $urlToEncode=name:劉昕明,pho...