下面由thinkphp框架教程栏目给大家介绍Tp框架生成二维码的方法,希望对需要的朋友有所帮助!
基础环境系统环境:Windows10 x64PHP集成环境:phpstudyPHP依赖管理工具:Composer
(一) 安装qr-code扩展
composer require endroid/qr-code
(二)代码实现(代码亲测有效)
<?php
namespace app\\common\\service;
use Jrk\\Random;
use Endroid\\QrCode\\QrCode;
use think\\Exception;
class QrcodeSrvice
{
/**
* @param $text
* @param int $size
* @param bool $domain
* @return string
* @author: Hhy <jackhhy520@qq.com>
* @describe:生成普通二维码
*/
public static function make_qrcode$text,$size=105,$domain=false){
$img_name = Random::alnum15);
$n = date"Ym");
$dir= app)->getRootPath)."public/qrcode/code/".$n;
//判断目录是否存在
if !is_dir$dir)) {
mkdir$dir, 0777, true);
}
$pathname = $dir."/" . $img_name . '.png';
$qrCode = new QrCode);
$qrCode->setText$text)
->setSize$size)
->setPadding15)
->setErrorCorrection'high')
->setForegroundColorarray'r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColorarray'r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setImageTypeQrCode::IMAGE_TYPE_PNG);
try {
$qrCode->save$pathname);
$str="/qrcode/code/".$n."/". $img_name . '.png';
if $domain){
return request)->domain).$str;
}else{
return $str;
}
} catch \\Endroid\\QrCode\\Exceptions\\ImageTypeInvalidException $exception) {
return "";
}
}
/**
* @param $text
* @param $logo
* @return string
* @throws Exception
* @author: Hhy <jackhhy520@qq.com>
* @describe:生成带logo 的二维码
*/
public static function QrCodeWithLogo$text,$logo,$domain=false){
if !file_exists$logo)){
exception"logo地址不存在");
}
$img_name = Random::alnum15);
$n = date"Ym");
$dir= app)->getRootPath)."public/qrcode/".$n;
//判断目录是否存在
if !is_dir$dir)) {
mkdir$dir, 0777, true);
}
$pathname = $dir."/" . $img_name . '.png';
$qrCode = new QrCode);
$qrCode->setText$text)
->setSize300)
->setLogo$logo)
->setLogoSize60)
->setErrorCorrection'high')
->setForegroundColorarray'r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColorarray'r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setImageTypeQrCode::IMAGE_TYPE_PNG);
$qrCode->save$pathname);
$str="/qrcode/".$n."/". $img_name . '.png';
if $domain){
return request)->domain).$str;
}else{
return $str;
}
}
}
