PHP QR Code 是純 PHP 實現的二維碼生成庫,無需安裝擴展,支援誤差校正、尺寸調整、Logo 嵌入。本文從庫下載、基礎輸出、檔案儲存、到帶 Logo 合成圖片的完整流程,提供可直接複製執行的代碼範例。
phpqrcode/ ├── phpqrcode.php # 主入口 ├── qrlib.php # 便捷封裝 └── ... (其他核心類別)
只需將整個 phpqrcode 目錄放入專案即可,無需 Composer、無需編譯。
(實際運行會顯示二維碼圖片)
include('phpqrcode/phpqrcode.php');
$data = 'https://www.example.com';
$filename = 'qrcode.png';
$errorCorrectionLevel = 'L';
$matrixPointSize = 4;
$margin = 2; // 邊距
QRcode::png($data, $filename, $errorCorrectionLevel, $matrixPointSize, $margin);
| 參數 | 說明 | 範圍/預設 |
|---|---|---|
| $text | 編碼內容 | 字串 |
| $outfile | 輸出檔案路徑,false 直接輸出 | false / 路徑 |
| $level | 誤差校正等級 | L(7%)/M(15%)/Q(25%)/H(30%),預設 L |
| $size | 模組大小 (像素) | 1-10,預設 3-4 |
| $margin | 靜區邊距 (模組數) | 0-10,預設 4 |
| $saveandprint | 是否同時儲存並輸出 | true/false,預設 false |
原理:利用高誤差校正 (H/Q 級) 容錯特性,將 Logo 覆蓋在二維碼中心,掃碼仍可識別。
| 建議項目 | 說明 |
|---|---|
| 誤差校正等級 | 必須用 H 級 (30%),L/M 級覆蓋 Logo 後極大機率無法識別 |
| Logo 佔比 | 不超過二維碼面積的 1/5 ~ 1/6 (本例用 1/5) |
| Logo 格式 | PNG 透明背景,避免白底遮擋定位點 |
| Logo 內容 | 簡單圖標優於複雜文字,邊緣留白 10-20% |
| 測試驗證 | 生成後務必用多款掃碼 App (微信、支付寶、iOS 相機) 實測 |
imagecopyresampled 參數,確保寬高比例一致// ThinkPHP 控制器方法
public function qrcode() {
$url = input('url', 'https://example.com');
$logo = input('logo', ''); // 可選
$file = 'uploads/qrcode_' . md5($url) . '.png';
if (!is_file($file)) {
// 調用上述生成邏輯...
}
return json(['url' => '/'.$file]);
}
PHP QR Code 零依賴、純 PHP、功能完整,是中小專案生成二維碼的首選方案。