phpqrcode 是 PHP 端最輕量的 QR Code 生成庫,無需安裝擴充套件即可使用。本文示範如何生成標準二維碼,並進階實作「疊加 Logo 圖片」功能,滿足品牌識別需求。
extension=gd)<?php include 'phpqrcode/qrlib.php'; // 載入核心庫 $value = 'https://example.com'; // 二維碼內容 $errorCorrectionLevel = 'L'; // 容錯等級:L(7%) M(15%) Q(25%) H(30%) $matrixPointSize = 10; // 模組大小:1-10 // 直接輸出到瀏覽器 QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize, 2); // 或儲存為檔案 QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2); echo "二維碼已生成 <br />";
<?php
include 'phpqrcode/qrlib.php';
$value = 'https://example.com';
$logo = 'logo.png'; // Logo 路徑
$qrFile = 'qrcode.png'; // 臨時二維碼檔
$outputFile = 'qrcode_logo.png'; // 最終輸出檔
// 1. 先生成不帶 Logo 的二維碼
QRcode::png($value, $qrFile, 'L', 10, 2);
// 2. 使用 GD 疊加 Logo
if (file_exists($logo)) {
$qr = imagecreatefromstring(file_get_contents($qrFile));
$logoImg = imagecreatefromstring(file_get_contents($logo));
$qrW = imagesx($qr);
$qrH = imagesy($qr);
$logoW = imagesx($logoImg);
$logoH = imagesy($logoImg);
// Logo 佔二維碼 1/5 寬度,等比縮放
$logoQrW = $qrW / 5;
$scale = $logoW / $logoQrW;
$logoQrH = $logoH / $scale;
// 置中座標
$fromX = ($qrW - $logoQrW) / 2;
$fromY = ($qrH - $logoQrH) / 2;
// 重採樣疊加(保持透明度)
imagecopyresampled($qr, $logoImg, $fromX, $fromY, 0, 0,
$logoQrW, $logoQrH, $logoW, $logoH);
// 輸出最終圖片
imagepng($qr, $outputFile);
imagedestroy($qr);
imagedestroy($logoImg);
echo "<img src='$outputFile' alt='帶 Logo 二維碼'>";
} else {
echo "Logo 檔案不存在";
}
| 參數 | 說明 | 建議值 |
|---|---|---|
| errorCorrectionLevel | 容錯等級,越高越耐遮擋但圖案越密集 | L 或 M(帶 Logo 時建議 H) |
| matrixPointSize | 單模組像素大小 | 4-10(列印建議 ≥6) |
| Logo 尺寸比例 | Logo 寬度 / 二維碼寬度 | ≤ 1/5(超過可能掃描失敗) |
imagecopyresampled 而非 imagecopyresized,保持長寬比快速測試可使用:在線二維碼生成器