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

PHP 使用 PHP QR Code 庫生成二維碼(含 Logo 嵌入)

     編輯:PHP 相關知識

PHP QR Code 是純 PHP 實作的 QR Code 產生器,無需安裝額外擴展,支援誤碼糾正等級、尺寸調整、直接輸出圖片或存檔。本文示範基本用法、檔案輸出、以及進階「二維碼中心嵌入 Logo」完整流程。

準備工作

  1. 下載庫:SourceForge 或 composer require chillerlan/php-qrcode (現代分支)。
  2. 專案引入 phpqrcode.php(舊版單檔)或自動載入。

基本用法

1. 直接輸出到瀏覽器

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

$value = 'https://www.example.com';
$errorCorrectionLevel = 'L'; // L/M/Q/H,L 最低容錯 7%
$matrixPointSize = 4;        // 1-10,模組大小

QRcode::png($value, false, $errorCorrectionLevel, $matrixPointSize);
exit;
?>

2. 存成圖片檔案

<?php
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);
echo "Generated: $filename";
?>

進階:二維碼中心嵌入 Logo

原理:先生成高容錯(H 級)二維碼,再用 GD 將 Logo 縮放至二維碼寬度 1/5~1/4,置中覆蓋。高容錯確保遮蓋後仍可掃描。

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

$value = 'https://www.example.com';
$logoFile = 'logo.png';      // 建議透明背景 PNG
$qrFile = 'qrcode_raw.png';
$outputFile = 'qrcode_with_logo.png';

// 1. 產生高容錯二維碼(H 級,尺寸較大)
QRcode::png($value, $qrFile, 'H', 10, 2);

// 2. 載入圖片資源
$qr = imagecreatefromstring(file_get_contents($qrFile));
$logo = imagecreatefromstring(file_get_contents($logoFile));

if (!$qr || !$logo) {
    die('圖片載入失敗');
}

// 3. 計算 Logo 目標尺寸(二維碼寬度 1/5)
$qrW = imagesx($qr);
$qrH = imagesy($qr);
$logoW = imagesx($logo);
$logoH = imagesy($logo);

$targetW = $qrW / 5;
$scale = $logoW / $targetW;
$targetH = $logoH / $scale;

// 4. 計算置中座標
$fromX = ($qrW - $targetW) / 2;
$fromY = ($qrH - $targetH) / 2;

// 5. 重採樣覆蓋(保持透明度)
imagecopyresampled($qr, $logo, $fromX, $fromY, 0, 0, $targetW, $targetH, $logoW, $logoH);

// 6. 輸出最終圖
imagepng($qr, $outputFile);
imagedestroy($qr);
imagedestroy($logo);

echo "<img src='$outputFile' alt='QR with Logo'>";
?>

關鍵參數說明

參數說明建議值
errorCorrectionLevel誤碼糾正等級:L(7%) M(15%) Q(25%) H(30%)嵌入 Logo 必須用 H
matrixPointSize單模組像素大小4-10,Logo 版建議 ≥8
margin靜區寬度(模組數)2-4
Logo 尺寸比例佔二維碼寬度比例1/5 (20%) 較安全,不可超過 1/3

常見問題與優化

  • 掃不出來:降低 Logo 佔比、提高容錯等級至 H、確保二維碼周圍有足夠靜區。
  • Logo 白底遮蓋:使用透明 PNG,或先將白底轉透明(imagecolortransparent)。
  • 效能:大量生成時,避免重複讀取 Logo 檔案,改用緩存的 GD 資源。
  • 現代替代:chillerlan/php-qrcode (Composer) 支援 PHP 8、更豐富輸出格式(SVG、EPS)、更好型別提示。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved