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大小后就可以正常識別二維碼了