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
Requires
- php: ^8.2
Requires (Dev)
- pestphp/pest: ^3.0
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