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

PHP 使用 phpqrcode 生成帶 Logo 的二維碼完整教學

     編輯:PHP 綜合知識

前言

phpqrcode 是 PHP 端最輕量的 QR Code 生成庫,無需安裝擴充套件即可使用。本文示範如何生成標準二維碼,並進階實作「疊加 Logo 圖片」功能,滿足品牌識別需求。

環境準備

  1. 下載 phpqrcode 並解壓至專案目錄
  2. 確認 PHP 啟用 GD 擴充套件(extension=gd)
  3. 準備一張 Logo 圖片(建議 PNG 透明背景,尺寸 100×100px 內)

基礎版:生成標準二維碼

<?php
include 'phpqrcode/qrlib.php';  // 載入核心庫

$value = 'https://example.com';     // 二維碼內容
$errorCorrectionLevel = 'L';        // 容錯等級:L(7%) M(15%) Q(25%) H(30%)
$matrixPointSize = 10;              // 模組大小:1-10

// 直接輸出到瀏覽器
QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize, 2);

// 或儲存為檔案
QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);
echo "二維碼已生成 <br />";

進階版:疊加 Logo 圖片

<?php
include 'phpqrcode/qrlib.php';

$value = 'https://example.com';
$logo = 'logo.png';      // Logo 路徑
$qrFile = 'qrcode.png';  // 臨時二維碼檔
$outputFile = 'qrcode_logo.png'; // 最終輸出檔

// 1. 先生成不帶 Logo 的二維碼
QRcode::png($value, $qrFile, 'L', 10, 2);

// 2. 使用 GD 疊加 Logo
if (file_exists($logo)) {
    $qr = imagecreatefromstring(file_get_contents($qrFile));
    $logoImg = imagecreatefromstring(file_get_contents($logo));
    
    $qrW = imagesx($qr);
    $qrH = imagesy($qr);
    $logoW = imagesx($logoImg);
    $logoH = imagesy($logoImg);
    
    // Logo 佔二維碼 1/5 寬度,等比縮放
    $logoQrW = $qrW / 5;
    $scale = $logoW / $logoQrW;
    $logoQrH = $logoH / $scale;
    
    // 置中座標
    $fromX = ($qrW - $logoQrW) / 2;
    $fromY = ($qrH - $logoQrH) / 2;
    
    // 重採樣疊加(保持透明度)
    imagecopyresampled($qr, $logoImg, $fromX, $fromY, 0, 0, 
                       $logoQrW, $logoQrH, $logoW, $logoH);
    
    // 輸出最終圖片
    imagepng($qr, $outputFile);
    imagedestroy($qr);
    imagedestroy($logoImg);
    
    echo "<img src='$outputFile' alt='帶 Logo 二維碼'>";
} else {
    echo "Logo 檔案不存在";
}

關鍵參數說明

參數說明建議值
errorCorrectionLevel容錯等級,越高越耐遮擋但圖案越密集L 或 M(帶 Logo 時建議 H)
matrixPointSize單模組像素大小4-10(列印建議 ≥6)
Logo 尺寸比例Logo 寬度 / 二維碼寬度≤ 1/5(超過可能掃描失敗)

常見問題與解決

  • 掃描失敗:提高容錯等級至 H、縮小 Logo 面積、增加留白區
  • Logo 變形:使用 imagecopyresampled 而非 imagecopyresized,保持長寬比
  • 透明背景變黑:確保 Logo 為 PNG 格式,且 GD 版本支援 Alpha 通道

線上工具參考

快速測試可使用:在線二維碼生成器

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