首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 生成 QR Code 完整指南:Google API 與 PHP QR Code 庫實戰

     編輯:PHP 綜合知識

二維碼生成兩大主流方案詳細教學

QR Code 廣泛應用於行動支付、網址分享、防偽追蹤等場景。PHP 生成二維碼主要有兩種路徑:呼叫 Google Chart API(簡單但依賴外部服務)與使用 PHP QR Code 庫(本地生成、支援嵌入 Logo)。本文完整示範兩種做法及 Logo 嵌入技巧。

方案一:Google Chart API(零依賴、適合簡單需求)

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 服務不穩定時失效、無法離線/內網使用。

方案二:PHP QR Code 庫(本地生成、功能完整)

官網: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 // 是否同時存檔並輸出
);

進階:生成帶 Logo 的二維碼

原理:先生成標準 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">';

關鍵技術細節

  1. 容錯等級選 H:嵌入 Logo 會遮蓋資料區,H 等級可修正 30% 損壞
  2. Logo 尺寸控制:建議不超過 QR Code 1/5~1/4,過大導致掃描失敗
  3. 白邊保留:`margin` 參數至少 2-4 模組,確保掃描器識別定位點
  4. 圖片格式:Logo 建議 PNG 透明背景,避免白框干擾
  5. 效能考量:大量生成時可快取基礎 QR Code,僅疊加 Logo 部分動態處理

線上工具參考

本站提供線上 QR Code 生成器:https://tools.jb51.net/transcoding/jb51qrcode

根據專案需求選擇:簡單展示用 Google API,正式產品建議用 PHP QR Code 庫掌握完整控制權。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved