二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码,堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成,矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”,用“空”表示二进制“0”,“点”和“空”的排列组成代码.
堆叠式/行排式二维条码,如,Code 16K、Code 49、PDF417等.
矩阵式二维码,最流行莫过于QR CODE.
矩阵式二维码存储的数据量更大,可以包含数字、字符,及中文文本等混合内容,有一定的容错性(在部分损坏以后可以正常读取),空间利用率高等.
PHP实例代码如下:
- <?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".
- "nFN:$vname".
- "nTEL:$vtel".
- "nEND: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生成网址二维码,代码如下:
- <?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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $vcard = array(
- 'vname' => '用户名',
- 'vtel' => '13800000000',
- 'vemail' => 'aaaaa@163.com',
- 'vaddress' => '杭州市西湖区',
- );
- generateQRfromGoogle($vcard);
- function generateQRfromGoogle($vcard,$widhtHeight ='150',$EC_level='L',$margin='0')
- {
- if($vcard){
- $chl = "BEGIN:VCARDnVERSION:3.0".
- "nFN:".$vcard['vname'].
- "nTEL:".$vcard['vtel'].
- "nEMAIL:".$vcard['vemail'].
- "nADR:".$vcard['vaddress'].
- "nEND: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.'"/>';
- }
- }
- ?>
如果想实现中间有logo的效果,需要通过另外一个logo小图进行拼接即可,这里只提供一种实现方法,也可以通过QRcode的方式进行生成.
vcode的标准信息可以参看维基百科.
注:有些生成的图片经扫描没有的数据的原因是编码导致的,该问题在windows下较常见,由于很多编辑器默认提供的是ANSI编码,更改成utf8就OK了. |