ThinkPHP生成二维码(可自定义设置LOGO)

发布时间:2019-12-09 21:17:44 浏览量:1127 标签: 二维码 logo

基于ThinkPHP框架生成二维码,可自定义logo及其他参数,方法简单易懂,使用composer安装扩展类,区区数十行代码便可以实现功能。可以自定义二维码大小、写入文件的后缀名、二维码内容相对于整张图片的外边距、编码类型、容错率、前景色、背景色等参数。

ebe0066f3d96fc872ed77db0493b0ab1.png

一、使用composer安装扩展类

composer安装教程:composer系列之介绍及安装

安装扩展类库:

endroid/qr-code

命令:

composer require endroid/qr-code


二、代码

/**
 * 二维码生成
 * @param $link
 * @return string|\think\response\Json
 * @throws \Endroid\QrCode\Exception\InvalidPathException
 * @throws \Endroid\QrCode\Exception\InvalidWriterException
 */
public function qrCode($link)
{
//设置路径
if(!$link) {
return json([ 'code' => 100, 'msg' => '缺失参数' ]);
}
//加密生成文件名称
$sha1 = sha1($link);
//设置保存目录
$qrCode_dir = './code/';
//判断目录是否存在
if(!file_exists($qrCode_dir)) mkdir($qrCode_dir, 0777, true);
//拼接完整文件名称
$file_name = $qrCode_dir . $sha1 . '.png';
//设置头
header('Content-Type: image/png');
if(!is_file($file_name)) {
$qrCode = new QrCode($link);
$qrCode->setSize(120); //二维码大小
$qrCode->setWriterByName('png'); //写入文件的后缀名
$qrCode->setMargin(5); //二维码内容相对于整张图片的外边距
$qrCode->setEncoding('UTF-8'); //编码类型
$qrCode->setErrorCorrectionLevel(new ErrorCorrectionLevel(ErrorCorrectionLevel::HIGH));   // 容错率
$qrCode->setForegroundColor([ 'r' => 0, 'g' => 0, 'b' => 0, 'a' => 0 ]); //前景色
$qrCode->setBackgroundColor([ 'r' => 255, 'g' => 255, 'b' => 255, 'a' => 0 ]); //背景色
//写入logo
$logoUrl = './code/_logo.png';
$qrCode->setLogoPath($logoUrl);
$qrCode->setLogoWidth(30);
//创建片
$qrCode->writeFile($file_name);
}
return substr($file_name, 1);
}




评论
登录后才可以进行评论哦! QQ登录
验证码
评论内容