chapdel/qr-code

A powerful PHP library for generating styled QR codes

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/chapdel/qr-code

1.0 2026-01-10 20:37 UTC

This package is not auto-updated.

Last update: 2026-01-11 18:54:44 UTC


README

A powerful PHP library for generating styled QR codes with support for:

  • 🎨 SVG & Raster (PNG, JPG, GIF) Output
  • 🌈 Gradients (Linear & Radial)
  • 🔴 Custom Dot Styles (Rounded, Classy, Classy-Rounded, Dots, Square)
  • 🖼️ Logo Integration (Centered images with background clearing)
  • 🎭 Predefined Themes (Facebook, Organic, Neon, etc.)
  • 🔧 Custom Renderers (Draw your own shapes via PHP closures)
  • Animated GIFs (Create rotating gradient animations)

Installation

composer require chapdel/qr-code

Note: The imagick extension is recommended for high-quality raster output (PNG/JPG/GIF) and custom shapes in raster mode. GD is used as a fallback for basic squares.

Usage

Basic Example

use Chapdel\Qr\QRCodeStyling;

$qr = new QRCodeStyling([
    'data' => 'https://example.com',
    'image' => 'https://link-to-your-logo.com/logo.png',
    'dotsOptions' => [
        'type' => 'rounded',
        'color' => '#4267b2'
    ],
    'backgroundOptions' => [
        'color' => '#ffffff',
    ]
]);

// Output SVG
header('Content-Type: image/svg+xml');
echo $qr->getRawData('svg');

Advanced Styling with Gradients

$qr = new QRCodeStyling([
    'data' => 'https://example.com',
    'dotsOptions' => [
        'type' => 'classy-rounded',
        'gradient' => [
            'type' => 'linear',
            'rotation' => 45,
            'colorStops' => [
                ['offset' => 0, 'color' => '#ff0000'],
                ['offset' => 1, 'color' => '#0000ff']
            ]
        ]
    ],
    'cornersSquareOptions' => [
        'type' => 'extra-rounded', 
        'color' => '#000000'
    ]
]);

Using Helpers for Content

Easily generate special content like WiFi, vCard, or SMS without knowing the raw syntax.

use Chapdel\Qr\Helper\QRContent;

$wifiData = QRContent::wifi('MyHomeNetwork', 'SecretPassword', 'WPA');
// WIFI:T:WPA;S:MyHomeNetwork;P:SecretPassword;;

$qr->update(['data' => $wifiData]);

Applying Themes

Apply professional styles instantly using predefined themes.

$qr->applyTheme('facebook'); 
// Automatically sets colors, logo, and shapes to match Facebook branding.

$qr->applyTheme('dark-neon'); 
// Sets a dark background with neon gradients.

Custom Shapes (Advanced)

Define your own dot renderer using a Closure. This allows you to draw any SVG path for the QR modules.

$qr->update([
    'dotsOptions' => [
        'type' => 'custom',
        'renderer' => function($x, $y, $size, $color) {
            // Draw a star, heart, or specific icon
            return '<path d="..." fill="'.$color.'"/>';
        }
    ]
]);

Animated GIF

Generate an animated QR code (requires Imagick).

$gifBinary = $qr->getRawData('gif');
file_put_contents('animated_qr.gif', $gifBinary);

Supported Options

Option Category Key Features
dotsOptions Types: square, dots, rounded, extra-rounded, classy, classy-rounded, custom. Gradient support.
cornersSquareOptions Types: square, dot, extra-rounded, none. Separate colors/gradients.
cornersDotOptions Types: square, dot. Separate colors/gradients.
backgroundOptions Color, Gradient, Rounding (border-radius).
imageOptions hideBackgroundDots (clears dots behind logo), imageSize, margin.
qrOptions typeNumber (Version 0-40), errorCorrectionLevel (L, M, Q, H).

Requirements

  • PHP 8.2+
  • ext-gd (Standard fallback)
  • ext-imagick (Recommended for advanced raster features)

License

MIT