PHP QR Code生成二维码
简介:
PHP QR Code是php生成二维码的类库
下载地址:https://sourceforge.net/projects/phpqrcode/files/
流程:
解压文件后,调用phpqrcode.php文件的png方法即可生成最初级的二维码
实例:(下面程序即可生成最简单的二维码)
<?php
$data = 'XXXXX';
QRcode::png($data);//类库中其他参数有默认 png方法的配置可看下面png方法详细介绍
?>
png方法:
注意: (从phpqrcode中取出来的,也算是生成二维码的核心方法)
/*
*@param $text 要生成二维码的数据,没有初始值
*@param $outfile 是否输出二维码图片 文件,默认否
*@param $lenvel 容错率,也就是有被覆盖的区域还能识别,分别是 L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%)
*@param $size表示生成图片大小,默认是3
*@param $margin表示二维码周围边框空白区域间距值
*@param $saveandprint表示是否保存二维码并 显示
*/
public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)
{
$enc = QRencode::factory($level, $size, $margin);
return $enc->encodePNG($text, $outfile, $saveandprint=false);
}
/*
*@param $frame 要生成二维码的数据,没有初始值
*@param $filename 文件名
*@param $size表示生成图片大小,默认是3 == $pixelPerPoint = 4
*@param $margin表示二维码周围边框空白区域间距值 == $outerFrame
*@param $saveandprint表示是否保存二维码并 显示 == $saveandprint
*/
public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE)
{
$image = self::image($frame, $pixelPerPoint, $outerFrame);
if ($filename === false) {
Header("Content-type: image/png");
ImagePng($image);
} else {
if($saveandprint===TRUE){
ImagePng($image, $filename);
header("Content-type: image/png");
ImagePng($image);
}else{
ImagePng($image, $filename);
}
}
ImageDestroy($image);
}
扩展:
给二维码里嵌入图片。
原理:就是用php的gd库处理两张图片,把logo镶嵌在二维码的中央即可
代码示例:
<?php
include_once './QRcode/phpqrcode.php';
header('content-type:text/html;charset=utf-8');
//png函数的配置
$data = '敦煌的驼铃';
$level = 'L';
$size = 6;
$margine = 2;
$filename = 'qrcode.png';
//生成二维码
QRcode::png($data,$filename,$level,$size,$margine);
//二维码和合并的图片文件名
$QRcode = './qrcode.png';
$image = './guangzhou.png';
//imagecreatefromstring() 从字符串中的图像流新建一图像
$QR = imagecreatefromstring(file_get_contents($QRcode));
$IMG = imagecreatefromstring(file_get_contents($image));
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$IMG_width = imagesx($IMG);
$IMG_height = imagesy($IMG);
$QR_IMG_width = $QR_width/5;
$tmp = $IMG_width/$QR_IMG_width;
$QR_IMG_height = $IMG_height/$tmp;
$width = ($QR_width-$QR_IMG_width)/2;
//从新组合 imagecopyresampled()重采样拷贝部分图像并调整大小
imagecopyresampled($QR,$IMG,$width,$width,0,0,$QR_IMG_width,$QR_IMG_height,$IMG_width,$IMG_height);
/*
//如果需要生成图片文件html引用的
imagepng($QR,'newqrcode.png');
echo '<img src="newqrcode.png">';
*/
/*
//如果不生成图片文件,直接输出
Header("Content-type: image/png");
ImagePng($QR);
*/
?>