够意思博客够意思博客够意思博客

EasySwoole使用endroid/qr-code生成二维码


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;
   }
   
}

访问当前控制保存并输出二维码

EasySwoole使用endroid/qr-code生成二维码(图1)

本文为够意思原创文章,转载无需和我联系,但请注明来自够意思博客blog.go1s.cn:够意思博客 » EasySwoole使用endroid/qr-code生成二维码

加载中~