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

PHP QR Code 庫生成二維碼完整教學:參數調校、Logo 嵌入、批量生成

     編輯:PHP 相關知識

PHP QR Code 是純 PHP 實現的 QR Code 產生器,支援 QR Code 2005 標準、四級糾錯、任意尺寸。本文從安裝到進階應用完整示範。

安裝與基本用法

# Composer 安裝(推薦)
composer require endroid/qrcode
# 或下載 phpqrcode 原版庫放入專案目錄
<?php
require_once 'vendor/autoload.php'; // 或 qrlib.php

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

$qrCode = new QrCode('https://example.com');
$writer = new PngWriter();
$result = $writer->write($qrCode);

// 直接輸出
header('Content-Type: ' . $result->getMimeType());
echo $result->getString();

// 或儲存檔案
$result->saveToFile(__DIR__ . '/qrcode.png');
?>

核心參數說明

參數範圍說明
Error Correction LevelL / M / Q / HL=7% M=15% Q=25% H=30% 容錯,H 適合嵌入 Logo
Size (模組像素)1–50每個模組像素,圖片寬高 = (版本*4+17)*size
Margin0–10靜區寬度(模組數),建議 ≥2 確保掃描
EncodingUTF-8 等資料編碼,預設 UTF-8

進階:嵌入 Logo(疊圖法)

<?php
$qr = new QrCode('https://example.com');
$qr->setErrorCorrectionLevel(ErrorCorrectionLevel::High); // 必須 H 級
$writer = new PngWriter();
$result = $writer->write($qr);

$qrImg = imagecreatefromstring($result->getString());
$logo  = imagecreatefrompng(__DIR__ . '/logo.png'); // 建議透明 PNG

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

// Logo 佔整體 1/5,置中
$dstX = ($qrW - $logoW) / 2;
$dstY = ($qrH - $logoH) / 2;
imagecopy($qrImg, $logo, $dstX, $dstY, 0, 0, $logoW, $logoH);

header('Content-Type: image/png');
imagepng($qrImg);
imagedestroy($qrImg);
imagedestroy($logo);
?>

批量生成與快取策略

  • 相同內容、參數的 QR Code 重複生成浪費 CPU,建議以 md5(data|level|size|margin) 為檔名快取到磁碟/Redis。
  • 大量生成(如會員專屬碼)可用 CLI 腳本 + pcntl_fork 或 Swoole 協程並行。
  • 輸出 SVG 格式可無限縮放、列印級品質:new SvgWriter()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved