hennest/qr-code

laravel应用的二维码生成器。

1.1 2024-08-01 14:08 UTC

This package is auto-updated.

Last update: 2024-09-02 16:36:23 UTC


README

这个库为PHP应用程序提供了一个简单易用的二维码生成器。它基于BaconQrCode库构建,并提供了一种灵活高效的方式来生成二维码。

安装

您可以通过Composer安装此库

composer require hennest/qr-code

Laravel集成

此库附带Laravel服务提供器,便于集成。安装后,将服务提供器添加到您的config/app.php文件中

'providers' => [
    // Other Service Providers
    Hennest\QRCode\Providers\QRCodeServiceProvider::class,
],

配置

发布配置文件

php artisan vendor:publish --tag=qr-code

这将创建一个config/qr-code.php文件,您可以在其中自定义库设置。

用法

基本用法

use Hennest\QRCode\Enums\Color;
use Hennest\QRCode\Configuration\Dimension;
use Hennest\QRCode\Configuration\ColorScheme;
use Hennest\QRCode\Services\QRCodeInterface;

class ExampleController
{
    public function __construct(
        private QRCodeInterface $qrCode
    ) {}

    public function example()
    {
        // Generate a QR code
        $qrCode = $this->qrCode->generate('https://example.com')->toSvg();
        
        // Generate a QR code with custom settings
        $qrCode = $this->qrCode->generate(
            content: 'https://example.com',
            dimension: new Dimension(
                size: 300, 
                margin: 300
            ),
            colorScheme: new ColorScheme(
                foreground: Color::Black,
                background: Color::White
            ) 
        )->toSvg();
        
        // Save a QR code to a file
        $this->qrCode->generate('https://example.com')->toImage('path/to/file.svg');
    }
    
    public function anotherExample()
    {
        // Generate a QR code
        $qrCode = app(QRCodeInterface::class)->generate('https://example.com')->toSvg();
        
        // Generate a QR code with custom settings
        $qrCode = app(QRCodeInterface::class)->generate(
            content: 'https://example.com',
            dimension: new Dimension(
                size: 300, 
                margin: 300
            ),
            colorScheme: new ColorScheme(
                foreground: Color::Black,
                background: Color::White
            ) 
        )->toSvg();
        
        // Save a QR code to a file
        $qrCode = app(QRCodeInterface::class)->generate('https://example.com')->toImage('path/to/file.svg');
    }
}

配置选项

config/qr-code.php文件允许您自定义库的各个方面。以下是可用选项的概述

return [
    /**
     * QR Code assembler configuration
     */
    'assembler' => [
        /**
         * QR Code assembler
         */
        'assembler' => Hennest\QRCode\Assembler\QRCodeAssembler::class,
        /**
         * QR Code assembler disk
         */
        'disk' => 'public',
    ],
    /**
     * QR Code default encoding
     */
    'encoding' => BaconQrCode\Encoder\Encoder::DEFAULT_BYTE_MODE_ECODING,
    /**
     * QR Code service
     */
    'qr-code' => Hennest\QRCode\Services\QRCode::class,
    /**
     * QR Code renderer configuration
     */
    'renderer' => [
        /**
         * QR Code renderer
         */
        'renderer' => BaconQrCode\Renderer\ImageRenderer::class,
        /**
         * QR Code renderer backend
         */
        'backend' => BaconQrCode\Renderer\Image\SvgImageBackEnd::class,
        /**
         * QR Code renderer default style configuration
         */
        'style' => [
            /**
             * QR Code renderer style
             */
            'style' => Hennest\QRCode\Configuration\RenderStyle::class,
            /**
             * QR Code renderer size
             */
            'size' => env('QR_CODE_SIZE', 300),
            /**
             * QR Code renderer margin
             */
            'margin' => env('QR_CODE_MARGIN', 4),
            /**
             * QR Code renderer color
             */
            'color' => [
                /**
                 * QR Code renderer foreground color
                 */
                'foreground' => Hennest\QRCode\Enums\Color::Black,
                /**
                 * QR Code renderer background color
                 */
                'background' => Hennest\QRCode\Enums\Color::White,
            ],
        ],
    ],
];

主要配置选项

  • assembler.disk:设置保存二维码的默认磁盘。
  • renderer.style.size:设置二维码的默认大小。
  • renderer.style.margin:设置二维码的默认边距。
  • renderer.style.color.foreground:设置二维码的前景色。
  • renderer.style.color.background:设置二维码的背景色。

贡献

欢迎贡献!请随时提交Pull Request。

许可

此库是开源软件,使用MIT许可