tp3.2 生成带logo的二维码

下载phpqrcode

整合到Thinkphp框架

在“ThinkPHP\Library\Vendor\”下新建目录phpqrcode,将压缩包内容解压到该文件夹下。

调用phpqrcode生成二维码

在IndexController控制器下添加如下方法:

public function qrcode() {
Vendor('phpqrcode.phpqrcode');//这个很重要,没引用则不能使用
$value = 'http://www.baidu.com'; //二维码内容 
$errorCorrectionLevel = 'L'; //容错级别 
$matrixPointSize = 6; //生成图片大小 
//生成二维码图片 
\QRcode::png($value, 'qrcode.jpg', $errorCorrectionLevel, $matrixPointSize, 2);//之前做的时候少了一个'\',会显示没有此类
$logo = './hello/hello.jpg'; //准备好的logo图片 ;引用文件地址同样很重要,我犯了引入地址错误,结果最后的二维码中间没有图片
$QR = 'qrcode.jpg'; //已经生成的原始二维码图

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);
}

$path = './Public/img/';

//这里可以调整一下
if(!is_dir($path)) {
$r = mkdir($path, true);
if(!$r){
$this->error('创建文件夹失败');
}
}

//输出图片
imagepng($QR, md5(time()).'.png');
$file = './'.md5(time()).'.png'; //旧目录
$newFile = $path.md5(time()).'.png'; //新目录
copy($file,$newFile); //拷贝到新目录
unlink($file); //删除旧目录下的文件

$path = substr($path,1);
$imgsrc = $path.md5(time()).".png";
$this->assign('imgsrc',$imgsrc);
$this->display();

}

猜你喜欢

转载自www.cnblogs.com/stay29/p/9215372.html