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

PHP 調用 Google Chart API 生成帶 Logo 二維碼完整實現

     編輯:PHP 相關知識

利用 Google Chart API 快速生成二維碼,並疊加 Logo 圖標,適合名片、推廣海報等場景。

核心代碼

<?php
// 參數獲取
$data = $_GET['t'] ?? 'https://example.com';
$size = $_GET['size'] ?? '150x150';
$logoPath = $_GET['logo'] ?? __DIR__ . '/logo.png';

// 生成基礎二維碼(L 級錯誤修正)
$chl = urlencode($data);
$qrUrl = "https://chart.googleapis.com/chart?chs={$size}&cht=qr&chl={$chl}&chld=L|1&choe=UTF-8";
$qr = imagecreatefrompng($qrUrl);

// 疊加 Logo
if ($logoPath && file_exists($logoPath)) {
    $logo = imagecreatefromstring(file_get_contents($logoPath));
    $qrW = imagesx($qr);
    $qrH = imagesy($qr);
    $logoW = imagesx($logo);
    $logoH = imagesy($logo);

    // Logo 佔二維碼 1/5 寬度,等比縮放
    $logoQrW = $qrW / 5;
    $scale = $logoW / $logoQrW;
    $logoQrH = $logoH / $scale;
    $fromX = ($qrW - $logoQrW) / 2;
    $fromY = ($qrH - $logoQrH) / 2;

    imagecopyresampled($qr, $logo, $fromX, $fromY, 0, 0, $logoQrW, $logoQrH, $logoW, $logoH);
    imagedestroy($logo);
}

// 輸出
header('Content-Type: image/png');
imagepng($qr);
imagedestroy($qr);

關鍵參數說明

參數說明建議值
chs圖片尺寸150x150 ~ 500x500
chld錯誤修正級別|邊距L|1 (7% 修正、1 行邊距)
choe編碼UTF-8

注意事項

  • Google Chart API 已停止維護,生產環境建議改用 endroid/qr-code (Composer) 或 phpqrcode 庫離線生成
  • Logo 面積不超過二維碼 1/5,確保掃揼識別率
  • 需開啟 GD 擴展(php_gd2.dll)
  • HTTPS 環境下 API URL 需用 https://

現代替代方案(Composer)

composer require endroid/qr-code

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();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved