composer引入endroid/qr-code包
composer require endroid/qr-code
引入之后执行下composer dump-autoload
php需要安装通用拓展fileinfo
控制中生成二维码
使用场景:生成用户专属推广二维码
<?php
namespace App\HttpController;
use EasySwoole\Http\AbstractInterface\Controller;
use Endroid\QrCode\Color\Color;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Label\Label;
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
class Index extends Controller
{
//根据用户ID生成二维码
public function index()
{
$http = $this->request()->getHeader('http')[0] ?? 'http'; //获取当前http协议
$host = $http . '://' . $this->request()->getHeaders()['host'][0]; //当前访问域名
$user_id = $this->request()->getRequestParam()['user_id'] ?? 1; //获取用户ID
$writer = new PngWriter(); //png格式
// 创建二维码
$qrCode = QrCode::create($host . "?id=$user_id")
->setEncoding(new Encoding('UTF-8'))
->setErrorCorrectionLevel(new ErrorCorrectionLevelHigh())
->setSize(300)
->setMargin(10)
->setRoundBlockSizeMode(new RoundBlockSizeModeMargin())
->setForegroundColor(new Color(0, 0, 0))
->setBackgroundColor(new Color(255, 255, 255));
// 加入logo
$logo = Logo::create(EASYSWOOLE_ROOT . '/public/logo.png')->setResizeToHeight(80)->setResizeToWidth(80);
// 加入文字
$label = Label::create('微信扫一扫或长按识别')->setTextColor(new Color(255, 0, 0));
$result = $writer->write($qrCode, $logo, $label);
$result->saveToFile(EASYSWOOLE_ROOT . '/uploads/qrcode/' . $user_id . '.png'); //保存图片到本地
//输出图片
$this->response()->withHeader('Content-type', $result->getMimeType());
$this->response()->write($result->getString());
return false;
}
}
访问当前控制保存并输出二维码
本文为够意思原创文章,转载无需和我联系,但请注明来自够意思博客blog.go1s.cn:够意思博客 » EasySwoole使用endroid/qr-code生成二维码