TaoLer/app/common/lib/QrCode.php

73 lines
2.2 KiB
PHP
Raw Normal View History

2022-08-02 21:13:36 +08:00
<?php
/*
* @Author: TaoLer <alipay_tao@qq.com>
* @Date: 2022-05-27 20:57:43
* @LastEditTime: 2022-05-28 09:33:43
* @LastEditors: TaoLer
* @Description: 搜索引擎SEO优化设置
* @FilePath: \TaoLer\app\common\lib\QrCode.php
* Copyright (c) 2020~2022 https://www.aieok.com All rights reserved.
*/
declare (strict_types = 1);
namespace app\common\lib;
use Endroid\QrCode\Builder\Builder;
use Endroid\QrCode\Encoding\Encoding;
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
use Endroid\QrCode\Label\Alignment\LabelAlignmentCenter;
use Endroid\QrCode\Label\Font\NotoSans;
use Endroid\QrCode\RoundBlockSizeMode\RoundBlockSizeModeMargin;
use Endroid\QrCode\Writer\PngWriter;
class QrCode
{
/**
* 生成二维码
*
* @param string $data
* @param string $labText
* @param string $logoPath
* @return string 返回图片src
*/
public function getQrcode(string $data, $labText = '', $logoPath = ''): string
{
//
if(empty($logoPath)) {
$result = Builder::create()
->writer(new PngWriter())
->writerOptions([])
->data($data)
->encoding(new Encoding('UTF-8'))
->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
->size(300)
->margin(10)
->roundBlockSizeMode(new RoundBlockSizeModeMargin())
->labelText($labText)
->labelFont(new NotoSans(20))
->labelAlignment(new LabelAlignmentCenter())
->build();
} else {
$result = Builder::create()
->writer(new PngWriter())
->writerOptions([])
->data($data)
->encoding(new Encoding('UTF-8'))
->errorCorrectionLevel(new ErrorCorrectionLevelHigh())
->size(300)
->margin(10)
->roundBlockSizeMode(new RoundBlockSizeModeMargin())
->logoPath($logoPath)
->labelText($labText)
->labelFont(new NotoSans(20))
->labelAlignment(new LabelAlignmentCenter())
->build();
}
header('Content-Type: ' . $result->getMimeType());
//$result->getString();
$imgsrc = $result->getDataUri();
return $imgsrc;
}
}