PHP QR Code 是純 PHP 實現的 QR Code 產生器,支援 QR Code 2005 標準、四級糾錯、任意尺寸。本文從安裝到進階應用完整示範。
# Composer 安裝(推薦)
composer require endroid/qrcode
# 或下載 phpqrcode 原版庫放入專案目錄
<?php
require_once 'vendor/autoload.php'; // 或 qrlib.php
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
$qrCode = new QrCode('https://example.com');
$writer = new PngWriter();
$result = $writer->write($qrCode);
// 直接輸出
header('Content-Type: ' . $result->getMimeType());
echo $result->getString();
// 或儲存檔案
$result->saveToFile(__DIR__ . '/qrcode.png');
?>
| 參數 | 範圍 | 說明 |
|---|---|---|
| Error Correction Level | L / M / Q / H | L=7% M=15% Q=25% H=30% 容錯,H 適合嵌入 Logo |
| Size (模組像素) | 1–50 | 每個模組像素,圖片寬高 = (版本*4+17)*size |
| Margin | 0–10 | 靜區寬度(模組數),建議 ≥2 確保掃描 |
| Encoding | UTF-8 等 | 資料編碼,預設 UTF-8 |
<?php
$qr = new QrCode('https://example.com');
$qr->setErrorCorrectionLevel(ErrorCorrectionLevel::High); // 必須 H 級
$writer = new PngWriter();
$result = $writer->write($qr);
$qrImg = imagecreatefromstring($result->getString());
$logo = imagecreatefrompng(__DIR__ . '/logo.png'); // 建議透明 PNG
$qrW = imagesx($qrImg);
$qrH = imagesy($qrImg);
$logoW = imagesx($logo);
$logoH = imagesy($logo);
// Logo 佔整體 1/5,置中
$dstX = ($qrW - $logoW) / 2;
$dstY = ($qrH - $logoH) / 2;
imagecopy($qrImg, $logo, $dstX, $dstY, 0, 0, $logoW, $logoH);
header('Content-Type: image/png');
imagepng($qrImg);
imagedestroy($qrImg);
imagedestroy($logo);
?>
md5(data|level|size|margin) 為檔名快取到磁碟/Redis。pcntl_fork 或 Swoole 協程並行。new SvgWriter()。