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

PHP 生成二維碼完整指南:Google API 與 PHP QR Code 實戰

     編輯:PHP 綜合知識

方案對比

維度Google Chart APIPHP QR Code 庫
部署方式外部依賴,無需本地庫本地庫,需 GD2 擴展
離線可用否是
自定義程度參數配置程式碼級控制
嵌入 Logo不支援支援(GD 圖像合成)
生成效能網路延遲本地生成,極快

方案一:Google Chart API(快速原型)

function generateQRFromGoogle($content, $size = 150, $level = 'L', $margin = 0) {
    $content = urlencode($content);
    $url = "https://chart.googleapis.com/chart?chs={$size}x{$size}&cht=qr&chld={$level}|{$margin}&chl={$content}";
    return 'QR Code';
}

// 使用
echo generateQRFromGoogle('https://example.com', 200, 'M', 2);

參數說明:

  • chs:圖片尺寸(寬x高)
  • chld:錯誤修正級別|邊距,級別 L(7%) M(15%) Q(25%) H(30%)
  • chl:URL 編碼後的內容

⚠️ 注意:Google Chart API 官方已停止維護,生產環境建議遷移至本地庫。

方案二:PHP QR Code 庫(生產推薦)

安裝與基本用法

# 下載庫文件
wget https://sourceforge.net/projects/phpqrcode/files/latest/download -O phpqrcode.zip
unzip phpqrcode.zip

# 需啟用 GD2 擴展
php -m | grep gd
require_once 'phpqrcode/qrlib.php';

// 直接輸出到瀏覽器
QRcode::png('https://example.com');

// 保存到文件
QRcode::png('https://example.com', 'qrcode.png', QR_ECLEVEL_L, 6, 2);

QRcode::png($text, $outfile, $level, $size, $margin, $saveAndPrint) 參數詳解:

  • $level:QR_ECLEVEL_L/M/Q/H 對應 7%/15%/25%/30% 容錯
  • $size:模組像素大小(預設 3)
  • $margin:靜區寬度(預設 4 模組)

進階:嵌入 Logo 的二維碼

利用 QR 碼容錯特性,中心區域可覆蓋 Logo 而不影響掃描。

require_once 'phpqrcode/qrlib.php';

$content = 'https://example.com';
$logoPath = 'logo.png';
$outputPath = 'qrcode_with_logo.png';

// 1. 生成基礎 QR 碼
QRcode::png($content, $outputPath, QR_ECLEVEL_H, 8, 2); // 高容錯 H 級

// 2. GD 圖像合成
$qr = imagecreatefromstring(file_get_contents($outputPath));
$logo = imagecreatefromstring(file_get_contents($logoPath));

$qrW = imagesx($qr);
$qrH = imagesy($qr);
$logoW = imagesx($logo);
$logoH = imagesy($logo);

// Logo 佔 QR 碼 1/5 寬度
$logoTargetW = $qrW / 5;
$scale = $logoW / $logoTargetW;
$logoTargetH = $logoH / $scale;

// 置中座標
$dstX = ($qrW - $logoTargetW) / 2;
$dstY = ($qrH - $logoTargetH) / 2;

// 重採樣合成
imagecopyresampled($qr, $logo, $dstX, $dstY, 0, 0, $logoTargetW, $logoTargetH, $logoW, $logoH);

// 輸出最終圖片
imagepng($qr, $outputPath);
imagedestroy($qr);
imagedestroy($logo);

echo '';

關鍵技術點

  1. 高容錯級別(H):預留 30% 容錯空間給 Logo 遮擋
  2. imagecopyresampled:高質量縮放,避免 Logo 鋸齒
  3. 置中計算:確保 Logo 視覺平衡

方案三:純 PHP 實現 UPC-A 條碼(補充)

原文包含一個 UPC-A 條碼生成函數,此處不再贅述。現代項目建議使用成熟庫(如 picqer/php-barcode-generator)支援 Code128、EAN13、QR 等多種格式。

選型建議

  • 快速演示/內部工具:Google API 或簡單 QRcode::png
  • 生產系統/高併發:本地 PHP QR Code,避免外部依賴
  • 需嵌入 Logo/品牌化:本地庫 + GD 合成,控制容錯級別
  • 多格式條碼:Composer 安裝 picqer/php-barcode-generator
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved