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

Symfony 產生 QR Code 完整教學:Google API、PHP QR Code 與 EndroidQrCodeBundle

     編輯:PHP 相關知識

方案比較

方案優點缺點適用場景
Google Chart API零安裝、極簡單行依賴外部服務、有流量限制、中國大陸可能不穩快速原型、內部工具
PHP QR Code 庫純 PHP、離線運作、可自訂效能較低、維護較舊中小專案、需客製化
EndroidQrCodeBundleSymfony 整合佳、支援 Twig、可快取、設定集中需額外安裝正式 Symfony 專案

方案一:Google Chart API(最簡單)

<?php
function generateQRfromGoogle($chl, $widthHeight = '150', $EC_level = 'L', $margin = '0') {
    $url = urlencode($chl);
    echo '<img src="https://chart.googleapis.com/chart?chs='.$widthHeight.'x'.$widthHeight.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$url.'" alt="QR Code" />';
}
// 使用
generateQRfromGoogle('https://example.com');
?>

API 文件:Google QR Code API

方案二:PHP QR Code 庫

安裝

下載:SourceForge 或官網 phpqrcode.sourceforge.net

使用

<?php
include('./phpqrcode/phpqrcode.php'); // 合併版單檔

// 產生檔案
QRcode::png('code data text', 'filename.png');

// 直接輸出到瀏覽器
QRcode::png('some other text 1234');
?>

方案三:EndroidQrCodeBundle(推薦用於 Symfony)

1. 安裝

composer require endroid/qrcode-bundle

2. 註冊 Bundle

<?php // app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Endroid\Bundle\QrCodeBundle\EndroidQrCodeBundle(),
    );
}

3. 設定路由

# app/config/routing.yml
EndroidQrCodeBundle:
    resource: "@EndroidQrCodeBundle/Controller/"
    type: annotation
    prefix: /qrcode

4. 設定參數(config.yml)

endroid_qr_code:
    size: 100
    padding: 10
    extension: gif
    error_correction_level: high
    foreground_color: { r: 0, g: 0, b: 0, a: 0 }
    background_color: { r: 255, g: 255, b: 255, a: 0 }
    # label: "My label"
    # labelFontSize: 16

5. Twig 中使用

{# 一般文字 #}
<img src="{{ qrcode_url(message) }}" />
<img src="{{ qrcode_url(message, extension='png') }}" />
<img src="{{ qrcode_url(message, size=150) }}" />

{# Data URI 內嵌(無需儲存檔案) #}
<img src="{{ qrcode_data_uri(message, size=200, padding=10) }}" />

Controller 中產生回應

use Endroid\QrCode\QrCode;

public function qrcodeAction()
{
    $qrCode = new QrCode();
    $qrCode->setText('https://example.com')
           ->setSize(200)
           ->setPadding(10)
           ->setErrorCorrection('high')
           ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0])
           ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);

    // 回應圖片
    return new Response($qrCode->get(), 200, ['Content-Type' => 'image/png']);

    // 或儲存檔案
    // $qrCode->writeFile(__DIR__.'/../../../web/qrcode.png');
}

選擇建議

  • 快速測試、低流量:Google API。
  • 需離線、客製化 Logo/顏色:PHP QR Code 或 EndroidQrCodeBundle。
  • Symfony 正式專案:首選 EndroidQrCodeBundle,整合度最高、可透過 DI 注入、支援快取與 Data URI。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved