TP框架中生成带背景带文字的二维码

时间:2023-03-10 07:20:08
TP框架中生成带背景带文字的二维码

首先下载一个phpqrcode的包放到/vendor目录下

链接:https://pan.baidu.com/s/18jV9DypYB_PHDhD6C0iedQ
提取码:qxuo

如果只是单纯生成二维码那么下面代码即可:

vendor('phpqrcode.phpqrcode');//引入
$url='你要生成的东西:文字、数字、链接等';
$errorCorrectionLevel = "Q"; // 容错级别:L、M、Q、H
$matrixPointSize = "3.8"; // 点的大小:1到10
$qr = new \QRcode();
ob_end_clean();
$qr->png($url,false,$errorCorrectionLevel, $matrixPointSize);//false代表不保存在本地

如果要生成带背景带文字的二维码:

1、首先需要文字的汉字包放在/public下

TP框架中生成带背景带文字的二维码

链接:https://pan.baidu.com/s/1g8wKEcW3F8edPN-HjZcWFA
提取码:8c2e

2、将你需要的背景图放在/public某一目录下我是放在/public/images下

TP框架中生成带背景带文字的二维码

然后就是代码操作:

     vendor('phpqrcode.phpqrcode');//引入包
$url='你需要生成的东西';
$errorCorrectionLevel = "Q"; // 容错级别:L、M、Q、H
$matrixPointSize = "3.8"; // 点的大小:1到10
$qr = new \QRcode();
ob_end_clean();
$path = '../public/qrcode/';//你保存初始二维码的路径
$QR = $path.$id.'.png';//初始二维码图片名
$qr->png($url,$QR,$errorCorrectionLevel, $matrixPointSize);//$QR是存放的路径 $bg = '../public/images/bg.jpg';//拿到背景图
$src_path = $QR;//拿到初始二维码
$dst = imagecreatefromstring(file_get_contents($bg));//获取
$src = imagecreatefromstring(file_get_contents($src_path));//获取 list($src_w, $src_h) = getimagesize($src_path);//获取宽高
$black = imagecolorallocate($dst, 255, 255, 255);//字体颜色(白色)
$font = realpath('../public/pingfang.ttf');//引入字体包 必须加realpath()否则会报错
$x = (375-$len*26)/2;//动态计算文字X坐标起始点
imagettftext($dst, 18, 0, $x, 510, $black, $font, $title);//循环添加文字
imagecopymerge($dst, $src, 100, 290, 0, 0, $src_w, $src_h, 100);//图片
header("Content-type: image/png");
imagepng($dst);//根据需要生成相应的图片并输出(如果需要保存本地就在后面加路径就好)
imagedestroy($dst);
imagedestroy($src);