PHP生成二维码 endroid/qr-code 扩展包
1. 引入 endroid/qr-code 扩展包
https://packagist.org/packages/endroid/qr-code
composer require endroid/qr-code
2. 使用示例
<?php
// composer require endroid/qr-code
require 'vendor/autoload.php';
use Endroid\QrCode\QrCode;
use Endroid\QrCode\ErrorCorrectionLevel;
use Endroid\QrCode\LabelAlignment;
use Endroid\QrCode\Response\QrCodeResponse;
// 扫描二维码后跳转的地址
$qrCode = new QrCode('https://www.itqaq.com');
// 内容区域宽高,默认为300
$qrCode->setSize(300);
// 外边距大小,默认为10
$qrCode->setMargin(10);
// 设置编码
$qrCode->setEncoding('UTF-8');
// 设置容错等级
$qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH());
// 设置二维码颜色,默认为黑色
$qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]);
// 设置二维码背景色,默认为白色
$qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);
// 设置二维码下方的文字
$qrCode->setLabel('个人技术博客网站', 11, null, LabelAlignment::CENTER());
##### 二维码中的logo #####
$qrCode->setLogoPath('logo.jpg');
$qrCode->setLogoSize(100, 90);
// $qrCode->setLogoWidth(100);
// $qrCode->setLogoHeight(90);
##### 二维码中的logo / #####
// 启用内置的验证读取器(默认情况下禁用)
$qrCode->setValidateResult(false);
########## 二维码三种显示方式 ##########
// 二维码输出在浏览器上
// header('Content-Type: ' . $qrCode->getContentType());
// echo $qrCode->writeString();
// 二维码存在本地
// $qrCode->writeFile('3.png');
// 返回数据URI
// data:image/png;base64,iVBORwxxx
$dataUri = $qrCode->writeDataUri();
echo '<img src="' . $dataUri . '">';
3. 二维码中放入logo,无法识别二维码的问题
闲着没事,测试二维码中放入logo时发现扫描二维码无法识别,经过反复调试得出结论:logo图片太大导出无法识别二维码
适当缩小logo大小后就可以正常识别二维码了