QR Code 廣泛應用於行動支付、網址分享、防偽追蹤等場景。PHP 生成二維碼主要有兩種路徑:呼叫 Google Chart API(簡單但依賴外部服務)與使用 PHP QR Code 庫(本地生成、支援嵌入 Logo)。本文完整示範兩種做法及 Logo 嵌入技巧。
function generateQRfromGoogle($chl, $widhtHeight = '150', $EC_level = 'L', $margin = '0') {
$chl = urlencode($chl);
echo '<img src="https://chart.apis.google.com/chart?chs=' . $widhtHeight . 'x' . $widhtHeight
. '&cht=qr&chld=' . $EC_level . '|' . $margin . '&chl=' . $chl
. '" alt="QR code" width="' . $widhtHeight . '" height="' . $widhtHeight . '"/>';
}
// 使用範例
generateQRfromGoogle("https://www.example.com");
參數說明:
chs:圖片尺寸(寬x高)chld:`錯誤修正等級|邊距`,等級 L(7%)/M(15%)/Q(25%)/H(30%)chl:編碼內容(需 URL encode)缺點:需網路連線、Google 服務不穩定時失效、無法離線/內網使用。
官網:phpqrcode.sourceforge.net,需 PHP 啟用 GD2 擴展。
include 'phpqrcode.php';
QRcode::png('https://www.example.com'); // 直接輸出圖片
QRcode::png(
$text, // 編碼內容
$outfile = false, // 輸出檔案路徑(false 直接輸出瀏覽器)
$level = QR_ECLEVEL_L, // 容錯等級 L/M/Q/H
$size = 3, // 模組大小(1-10)
$margin = 4, // 邊距
$saveandprint = false // 是否同時存檔並輸出
);
原理:先生成標準 QR Code,再用 GD 函式將 Logo 縮放置中疊加。得益於 QR Code 容錯機制(最高 30%),遮蓋中心區域不影響掃描。
include 'phpqrcode.php';
$value = 'https://www.example.com';
$errorCorrectionLevel = 'H'; // 高容錯等級,嵌入 Logo 建議用 H
$matrixPointSize = 6;
// 1. 生成基礎 QR Code
QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);
$logo = 'logo.png';
$QR = 'qrcode.png';
if ($logo !== FALSE) {
$QR = imagecreatefromstring(file_get_contents($QR));
$logo = imagecreatefromstring(file_get_contents($logo));
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logo);
$logo_height = imagesy($logo);
// Logo 佔 QR Code 1/5 寬度
$logo_qr_width = $QR_width / 5;
$scale = $logo_width / $logo_qr_width;
$logo_qr_height = $logo_height / $scale;
$from_width = ($QR_width - $logo_qr_width) / 2;
// 重新取樣疊加
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0,
$logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
}
// 輸出最終圖片
imagepng($QR, 'final_qrcode.png');
echo '<img src="final_qrcode.png">';
本站提供線上 QR Code 生成器:https://tools.jb51.net/transcoding/jb51qrcode
根據專案需求選擇:簡單展示用 Google API,正式產品建議用 PHP QR Code 庫掌握完整控制權。