1. Go to this page and download the library: Download devxisas/qr-studio library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
devxisas / qr-studio example snippets
use Devxisas\QrStudio\Facades\QrCode;
// Generate an SVG (default) — safe to render directly in Blade with {!! !!}
$svg = QrCode::generate('https://devxi.com');
// Save to a file
QrCode::generate('https://devxi.com', '/path/to/qrcode.svg');
use Devxisas\QrStudio\Enums\ErrorCorrection;
use Devxisas\QrStudio\Enums\Format;
use Devxisas\QrStudio\Enums\Theme;
return [
// Output
'format' => Format::Svg, // Format enum or 'svg' | 'eps' | 'png'
'size' => 100, // pixels
'margin' => 0, // quiet zone around the code
'error_correction' => ErrorCorrection::Medium, // enum or 'L' | 'M' | 'Q' | 'H'
'encoding' => 'UTF-8', // character encoding
// Visual theme — applies a full visual preset to every QR code globally
'theme' => null, // null | 'ocean'|'sunset'|'forest'|'midnight'|'coral' | Theme enum
// Storage — used by saveToDisk() when no disk/path is specified per call
'disk' => 'local', // any disk from config/filesystems.php
'path' => 'qrcodes', // default directory on that disk
];
use Devxisas\QrStudio\Enums\Format;
QrCode::generate('...'); // SVG (default)
QrCode::format('png')->generate('...'); // PNG
QrCode::format(Format::Png)->generate('...'); // PNG via enum
QrCode::format('eps')->generate('...'); // EPS (vector, no browser preview)
use Devxisas\QrStudio\Enums\ErrorCorrection;
QrCode::errorCorrection('H')->generate('...');
QrCode::errorCorrection(ErrorCorrection::High)->generate('...');
use Devxisas\QrStudio\Enums\Style;
QrCode::style('square')->generate('...'); // default
QrCode::style('dot', 0.5)->generate('...');
QrCode::style('round', 0.7)->generate('...');
// Enum API
QrCode::style(Style::Dot, 0.5)->generate('...');
use Devxisas\QrStudio\Enums\EyeStyle;
QrCode::eye('square')->generate('...'); // default
QrCode::eye('circle')->generate('...');
QrCode::eye('pointy')->generate('...'); // new in BaconQrCode 3.x — curved outer + circle inner
// Enum API
QrCode::eye(EyeStyle::Circle)->generate('...');
QrCode::eye(EyeStyle::Pointy)->generate('...');
// From a file path
QrCode::format('png')
->errorCorrection('H')
->merge('/path/to/logo.png', 0.3)
->generate('https://devxi.com');
// From a string (e.g. fetched via HTTP)
QrCode::format('png')
->errorCorrection('H')
->mergeString(file_get_contents('/path/to/logo.png'), 0.3)
->generate('https://devxi.com');
// Uses config defaults for format and size
return response()->qrcode('https://devxi.com');
// Override format and size per call
return response()->qrcode('https://devxi.com', 'png', 300);
// Using enum
use Devxisas\QrStudio\Enums\Format;
return response()->qrcode('https://devxi.com', Format::Png, 300);
// Route example
Route::get('/qr/{url}', fn (string $url) => response()->qrcode($url, 'png'));
QrCode::generate('https://devxi.com');
QrCode::generate('Plain text content');
QrCode::whatsApp('+50312345678');
// With pre-filled message
QrCode::whatsApp('+50312345678', '¡Hola! Vi tu QR y quiero más información.');
use Devxisas\QrStudio\Enums\Theme;
QrCode::theme('ocean')->generate('...');
QrCode::theme(Theme::Sunset)->generate('...');
// Per-call options override the theme
QrCode::theme('ocean')->size(300)->eye('square')->generate('...');
// Set a global default in config/qr-studio.php
'theme' => 'ocean',
'theme' => Theme::Midnight,
// Save to default disk ('local') at default path ('qrcodes/')
$path = QrCode::format('png')->size(300)->saveToDisk(
'https://devxi.com',
'my-qr.png'
);
// → saves to storage/app/qrcodes/my-qr.png
// → returns 'qrcodes/my-qr.png'
// Full path — directory separator present, no prefix added
QrCode::saveToDisk('https://devxi.com', 'invoices/2025/001F.svg');
// Override disk per call (any disk from config/filesystems.php)
QrCode::format('png')->saveToDisk('https://devxi.com', 'qr.png', 's3');
// Get a public URL after saving
$url = Storage::disk('s3')->url($path);
// Combine with themes
QrCode::theme('ocean')->format('png')->size(400)->saveToDisk(
'https://devxi.com',
'branded.png',
's3'
);
'disk' => 's3', // default disk for all saveToDisk() calls
'path' => 'qrcodes', // default directory when filename has no '/'
// Save the model's QR code to disk
$document->saveQrCodeToDisk('facturas/001F.png');
$document->saveQrCodeToDisk('001F.png', 's3'); // override disk
$user->saveQrCodeToDisk('contacts/elmer.png', null, Format::Svg); // SVG
use Devxisas\QrStudio\Traits\HasQrCode;
class Product extends Model
{
use HasQrCode;
public function qrCodeData(): string
{
return route('products.show', $this);
}
}
// In controllers or Blade:
$product->qrCodeSvg(); // inline SVG (uses size from config)
$product->qrCodeSvg(300); // 300 px SVG
$product->qrCodeDataUri(); // PNG data URI for <img src="...">
$product->qrCodeDataUri(300); // PNG at 300 px
use Devxisas\QrStudio\Traits\HasQrCode;
// Contact card — encodes a MeCard QR code
class Contact extends Model
{
use HasQrCode;
public function qrCodeType(): string { return 'meCard'; }
public function qrCodeData(): array
{
return [
'name' => $this->last_name . ',' . $this->first_name,
'email' => $this->email,
'phone' => $this->phone ?? '',
'url' => route('contacts.show', $this),
];
}
}
// Office / venue — encodes a WiFi QR code
class Office extends Model
{
use HasQrCode;
public function qrCodeType(): string { return 'wifi'; }
public function qrCodeData(): array
{
return [
'encryption' => 'WPA',
'ssid' => $this->wifi_ssid,
'password' => $this->wifi_password,
];
}
}
// User profile — encodes a vCard QR code
class User extends Model
{
use HasQrCode;
public function qrCodeType(): string { return 'vCard'; }
public function qrCodeData(): array
{
return [
'name' => $this->last_name . ';' . $this->first_name,
'email' => $this->email,
'phone' => $this->phone ?? '',
'url' => route('users.show', $this),
];
}
}
// Correct — always 0.5)->eye('square')->errorCorrection('H')->generate('...');
// Wrong — finder eyes will be invisible, code will not scan
QrCode::style('dot', 0.5)->generate('...');
QrCode::eye('circle')->generate('...');
QrCode::eye(EyeStyle::Pointy)->generate('...');
// Required with dot/round modules
QrCode::style('dot', 0.5)->eye('square')->errorCorrection('H')->generate('...');
use Devxisas\QrStudio\Enums\Theme;
// Apply a preset
QrCode::theme('ocean')->size(300)->generate('https://devxi.com');
// Override one value from the preset
QrCode::theme(Theme::Sunset)->size(300)->color(0, 0, 0)->generate('...');
// Save to default disk and path (config defaults)
$path = QrCode::format('png')->size(300)->saveToDisk('https://devxi.com', 'user-42.png');
// → "qrcodes/user-42.png"
// Explicit directory in filename — skips config path prefix
$path = QrCode::saveToDisk('https://devxi.com', 'invoices/2025/001F.svg');
// → "invoices/2025/001F.svg"
// Save to S3
$path = QrCode::format('png')->saveToDisk('https://devxi.com', 'qr.png', 's3');
// Combine theme + saveToDisk
QrCode::theme('ocean')->format('png')->size(400)->saveToDisk('https://devxi.com', 'ocean.png', 's3');
// Wrong — finder eyes are invisible, code will not scan
QrCode::style('dot', 0.5)->generate('...');
// Correct
QrCode::style('dot', 0.5)->eye('square')->errorCorrection('H')->generate('...');
// Throws RuntimeException if Imagick is not installed:
QrCode::format('png')->gradient(59, 130, 246, 168, 85, 247, 'radial')->generate('...');
// Always works — use SVG when Imagick is unavailable:
QrCode::gradient(59, 130, 246, 168, 85, 247, 'radial')->generate('...');
// Unreliable — default EC is M
QrCode::style('dot', 0.5)->eye('square')->generate('...');
// Reliable
QrCode::style('dot', 0.5)->eye('square')->errorCorrection('H')->generate('...');
// Wrong — state is reset after first generate(), second call uses defaults only
QrCode::size(300)->format('png');
QrCode::generate('...');
// Correct — configure everything in a single fluent chain
QrCode::size(300)->format('png')->generate('...');