二維條碼/二維碼可以分為堆疊式/行排式二維條碼和矩陣式二維條碼,堆疊式/行排式二維條碼形態(tài)上是由多行短截的一維條碼堆疊而成,矩陣式二維條碼以矩陣的形式組成,在矩陣相應(yīng)元素位置上用“點(diǎn)”表示二進(jìn)制“1”,用“空”表示二進(jìn)制“0”,“點(diǎn)”和“空”的排列組成代碼.
堆疊式/行排式二維條碼,如,Code 16K、Code 49、PDF417等.
矩陣式二維碼,最流行莫過(guò)于QR CODE.
矩陣式二維碼存儲(chǔ)的數(shù)據(jù)量更大,可以包含數(shù)字、字符,及中文文本等混合內(nèi)容,有一定的容錯(cuò)性(在部分損壞以后可以正常讀取),空間利用率高等.
PHP實(shí)例代碼如下:
- <?php
- $vname = 'test';
- $vtel = '13800000000';
- generateQRfromGoogle($vname,$vtel);
- function generateQRfromGoogle($vname,$vtel,$widhtHeight ='150',$EC_level='L',$margin='0')
- {
- if($vname&&$vtel){
- $chl = "BEGIN:VCARDnVERSION:3.0". //vcard頭信息
- "nFN:$vname".
- "nTEL:$vtel".
- "nEND:VCARD"; //vcard尾信息
- echo '<img src="http://chart.apis.google.com/chart?chs='.$widhtHeight.'x'.$widhtHeight.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.urlencode($chl).'" alt="QR code" widhtHeight="'.$size.'" widhtHeight="'.$size.'"/>';
- }
- }
- ?>
php生成網(wǎng)址二維碼,代碼如下:
- <?php
- $url = "http://www.google.com.hk";
- generateQRfromGoogle($url);
- function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')
- {
- echo '<img src="http://chart.apis.google.com/chart?chs='.$widhtHeight.'x'.$widhtHeight.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.urlencode($chl).'" alt="QR code" widhtHeight="'.$size.'" widhtHeight="'.$size.'"/>';
- }
- ?>
- //例子代碼如下:
- <?php
- /*
- * php 生成二維碼名片
- * api Google
- * google api 二維碼生成【QRcode可以存儲(chǔ)最多4296個(gè)字母數(shù)字類型的任意文本,具體可以查看二維碼數(shù)據(jù)格式】
- * @param string $chl 二維碼包含的信息,可以是數(shù)字、字符、二進(jìn)制信息、漢字。不能混合數(shù)據(jù)類型,數(shù)據(jù)必須經(jīng)過(guò)UTF-8 URL-encoded.如果需要傳遞的信息超過(guò)2K個(gè)字節(jié),請(qǐng)使用POST方式
- * @param int $widhtHeight 生成二維碼的尺寸設(shè)置
- * @param string $EC_level 可選糾錯(cuò)級(jí)別,QR碼支持四個(gè)等級(jí)糾錯(cuò),用來(lái)恢復(fù)丟失的、讀錯(cuò)的、模糊的、數(shù)據(jù)。
- * L-默認(rèn):可以識(shí)別已損失的7%的數(shù)據(jù)
- * M-可以識(shí)別已損失15%的數(shù)據(jù)
- * Q-可以識(shí)別已損失25%的數(shù)據(jù)
- * H-可以識(shí)別已損失30%的數(shù)據(jù)
- * @param int $margin 生成的二維碼離圖片邊框的距離
- * 二維碼名片的格式---vcard
- * 格式參考如下:
- BEGIN:VCARD
- VERSION:3.0
- FN:用戶名
- TEL;CELL;VOICE:0571-00000000
- TEL;WORK;VOICE:0571-00000000
- TEL;WORK;FAX:0571-00000000
- EMAIL;PREF;INTERNET:361way
- URL:http://www.111cn.net
- orG:361way運(yùn)維之路
- ROLE:研發(fā)部
- TITLE:CTO
- ADR;WORK;POSTAL:杭州市西湖區(qū)XXX號(hào);310000
- REV:2014-2-26T08:30:02Z
- END:VCARD
- 如果你想更詳細(xì)的定制所需要的格式,則需要詳細(xì)的了解vcard的格式標(biāo)準(zhǔn)。
- */
- $vcard = array(
- 'vname' => '用戶名',
- 'vtel' => '13800000000',
- 'vemail' => 'aaaaa@163.com',
- 'vaddress' => '杭州市西湖區(qū)',
- );
- generateQRfromGoogle($vcard);
- function generateQRfromGoogle($vcard,$widhtHeight ='150',$EC_level='L',$margin='0')
- {
- if($vcard){
- $chl = "BEGIN:VCARDnVERSION:3.0". //vcard頭信息
- "nFN:".$vcard['vname'].
- "nTEL:".$vcard['vtel'].
- "nEMAIL:".$vcard['vemail'].
- "nADR:".$vcard['vaddress'].
- "nEND:VCARD"; //vcard尾信息
- echo '<img src="http://chart.apis.google.com/chart?chs='.$widhtHeight.'x'.$widhtHeight.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.urlencode($chl).'" alt="QR code" widhtHeight="'.$size.'" widhtHeight="'.$size.'"/>';
- }
- }
- ?>
如果想實(shí)現(xiàn)中間有l(wèi)ogo的效果,需要通過(guò)另外一個(gè)logo小圖進(jìn)行拼接即可,這里只提供一種實(shí)現(xiàn)方法,也可以通過(guò)QRcode的方式進(jìn)行生成.
vcode的標(biāo)準(zhǔn)信息可以參看維基百科.
注:有些生成的圖片經(jīng)掃描沒(méi)有的數(shù)據(jù)的原因是編碼導(dǎo)致的,該問(wèn)題在windows下較常見(jiàn),由于很多編輯器默認(rèn)提供的是ANSI編碼,更改成utf8就OK了.
新聞熱點(diǎn)
疑難解答