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