[TOC] #### 1. 安装扩展 --- Packagist : [https://packagist.org/packages/endroid/qr-code](https://packagist.org/packages/endroid/qr-code) 注意使用的版本,写本文章时 3.x 是最新版,现在已经有更新的版本了,在新版本中,本文有些方法不能使用了 ``` composer require endroid/qr-code:"3.*" ``` #### 2. 使用示例 --- ```php <?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. 快速使用 --- 实际开发中,使用最多的是根据一串普通文本生成字符串,所以我将代码做了简化,方便以后快速使用 ```php <?php // composer require endroid/qr-code require 'vendor/autoload.php'; use Endroid\QrCode\QrCode; $qrCode = new QrCode("https://www.itqaq.com"); // 内容区域宽高,默认为300 $qrCode->setSize(300); // 外边距大小,默认为10 $qrCode->setMargin(10); // 设置编码 $qrCode->setEncoding('UTF-8'); // 返回数据URI // data:image/png;base64,iVBORwxxx $dataUri = $qrCode->writeDataUri(); echo '<img src="' . $dataUri . '">'; ``` #### 4. 无法识别二维码问题 --- **闲着没事,测试二维码中放入logo时发现扫描二维码无法识别,经过反复调试得出结论:logo图片太大导出无法识别二维码**  **适当缩小logo大小后就可以正常识别二维码了** 