PHP QR Code是一个PHP二维码生成类库,利用它可以轻松生成二维码,官网提供了下载和多个演示demo,查看地址:http://phpqrcode.sourceforge.net/

下载官网提供的类库后,只需要使用phpqrcode.php就可以生成二维码了,当然您的PHP环境必须开启支持GD2。 phpqrcode.php提供了一个关键的png()方法,其中参数$text表示生成二位的的信息文本;参数$outfile表示是否输出二维码图片 文件,默认否;参数$level表示容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); 参数$size表示生成图片大小,默认是3;参数$margin表示二维码周围边框空白区域间距值;参数$saveandprint表示是否保存二维码并 显示。

调用PHP QR Code非常简单,如下代码即可生成一张内容为"http://www.jb51.net"的二维码.
Php代码 
include './phpqrcode/phpqrcode.php';  
QRcode::png('http://www.jb51.net');  

也可以进行代码自定义

代码如下(不带LOGO):

//引入phpqrcode库文件

include('./phpqrcode/phpqrcode.php');

// 二维码数据

$data = 'http://www.yueshuo.net';

// 生成的文件名

$filename = 'logo.png';

// 纠错级别:L、M、Q、H

$errorCorrectionLevel = 'L';  

// 点的大小:1到10

$matrixPointSize = 10;  

//创建一个二维码文件
// 下面注释了把二维码图片保存到本地的代码,如果要保存图片,用$fileName替换第二个参数false

QRcode::png($data, false, $errorCorrectionLevel, $matrixPointSize, 3);

//输入二维码到浏览器

QRcode::png($data);


那么实际应用中,我们会在二维码的中间加上自己的LOGO,已增强宣传效果。那如何生成含有logo的二维码呢?其实原理很简单,先使用PHP QR Code生成一张二维码图片,然后再利用php的image相关函数,将事先准备好的logo图片加入到刚生成的原始二维码图片中间,然后重新生成一张新 的二维码图片。

代码如下:


include('./phpqrcode/phpqrcode.php');
$value='http://www.yueshuo.net'; //二维码内容
$errorCorrectionLevel='L';//容错级别
$matrixPointSize= 6;//生成图片大小
//生成二维码图片
QRcode::png($value,'qrcode.png',$errorCorrectionLevel,$matrixPointSize, 2);
$logo='logo.png';//准备好的logo图片
$QR='qrcode.png';//已经生成的原始二维码图
  
if($logo!== FALSE) {
 $QR= imagecreatefromstring(file_get_contents($QR));
 $logo= imagecreatefromstring(file_get_contents($logo));
 $QR_width= imagesx($QR);//二维码图片宽度
 $QR_height= imagesy($QR);//二维码图片高度
 $logo_width= imagesx($logo);//logo图片宽度
 $logo_height= imagesy($logo);//logo图片高度
 $logo_qr_width=$QR_width/ 5;
 $scale=$logo_width/$logo_qr_width;
 $logo_qr_height=$logo_height/$scale;
 $from_width= ($QR_width-$logo_qr_width) / 2;
 //重新组合图片并调整大小
 imagecopyresampled($QR,$logo,$from_width,$from_width, 0, 0,$logo_qr_width,
 $logo_qr_height,$logo_width,$logo_height);
}
//输出图片
imagepng($QR,'helloyueshuo.png');

echo'<img src="helloyueshuo.png">';


下面是参考上面的代码,不生产图片文件,方便调用的,将下面的代码保存为img.php


<?php
include('./phpqrcode/phpqrcode.php');
$value=$_GET['url'];//二维码内容
$errorCorrectionLevel='L';//容错级别
$matrixPointSize= 6;//生成图片大小
//生成二维码图片
QRcode::png($value,'qrcode.png',$errorCorrectionLevel,$matrixPointSize, 2);
$logo='logo.png';//准备好的logo图片
$QR='qrcode.png';//已经生成的原始二维码图
 
if($logo!== FALSE) {
 $QR= imagecreatefromstring(file_get_contents($QR));
 $logo= imagecreatefromstring(file_get_contents($logo));
 $QR_width= imagesx($QR);//二维码图片宽度
 $QR_height= imagesy($QR);//二维码图片高度
 $logo_width= imagesx($logo);//logo图片宽度
 $logo_height= imagesy($logo);//logo图片高度
 $logo_qr_width=$QR_width/ 5;
 $scale=$logo_width/$logo_qr_width;
 $logo_qr_height=$logo_height/$scale;
 $from_width= ($QR_width-$logo_qr_width) / 2;
 //重新组合图片并调整大小
 imagecopyresampled($QR,$logo,$from_width,$from_width, 0, 0,$logo_qr_width,
 $logo_qr_height,$logo_width,$logo_height);
}
//输出图片
Header("Content-type: image/png");

ImagePng($QR);

调用方法

<img src=http://www.yueshuo.net/qr/img..net/?sort=5" title="查看分类为 php 的文章" target="_blank">php?url=http://www.yueshuo.net>



   由于二维码允许有一定的容错性,一般的二维码即使在遮住部分但仍然能够解码,经常我们扫描二维码的时候扫描到甚至不到一半时就能解码扫描结果,这是因为生成器会将部分信息重复表示来提高其容错度,这就是为什么我们在二维码中间加个LOGO图片并不影响解码结果的原因。



phpqrcode下载地址: http://pan.baidu.com/s/1hqkpDrQ 密码: osjp



版权声明:若无特殊注明,本文皆为( yueshuo )原创,转载请保留文章出处。