前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ThinkPHP生成二维码(可自定义设置LOGO)

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

作者头像
申霖
发布2019-12-27 18:14:18
1.8K0
发布2019-12-27 18:14:18
举报
文章被收录于专栏:小白程序猿

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

一、使用composer安装扩展类

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

安装扩展类库:

代码语言:javascript
复制
endroid/qr-code

命令:

代码语言:javascript
复制
composer endroid/qr-code

二、代码

代码语言:javascript
复制

/**

 * 二维码生成

 * @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);

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档