Generate QR codes with PHP. Endroid library, Laravel integration, WordPress plugins, and more.
composer require endroid/qr-code
use Endroid\QrCode\QrCode;
$qrCode = new QrCode('https://example.com');
$qrCode
->setSize(300)
->setMargin(10)
->setEncoding('UTF-8')
->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH)
->setForegroundColor(new Color(0, 0, 0))
->setBackgroundColor(new Color(255, 255, 255));
header('Content-Type: ' . $qrCode->getContentType());
echo $qrCode->writeString();
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
$qrCode = new QrCode('https://example.com');
$writer = new PngWriter();
$result = $writer->write($qrCode);
// Save to file
$result->saveToFile('qrcode.png');
// Or get data URL
$dataUri = $result->getDataUri();
namespace App\Http\Controllers;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
class QRController extends Controller
{
public function generate(Request $request)
{
$url = $request->input('url', 'https://example.com');
$qrCode = new QrCode($url);
$writer = new PngWriter();
$result = $writer->write($qrCode);
return response()
->stream(function () use ($result) {
echo $result->getString();
}, 200, [
'Content-Type' => 'image/png',
'Content-Disposition' => 'attachment; filename="qrcode.png"'
]);
}
}
Route::get('/qr', [QRController::class, 'generate']);
// Usage: /qr?url=https://example.com
<?php
/*
Plugin Name: QR Code Generator
Description: Generate QR codes on posts
*/
add_shortcode('qr_code', function($atts) {
$atts = shortcode_atts([
'url' => get_permalink(),
'size' => 300
], $atts);
require_once(plugin_dir_path(__FILE__) . 'vendor/autoload.php');
$qrCode = new \Endroid\QrCode\QrCode($atts['url']);
$qrCode->setSize($atts['size']);
// Implement PNG output logic
});
?>
[qr_code url="https://example.com" size="300"]
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
$urls = [
'https://example.com/1',
'https://example.com/2',
'https://example.com/3',
];
$writer = new PngWriter();
foreach ($urls as $index => $url) {
$qrCode = new QrCode($url);
$result = $writer->write($qrCode);
$result->saveToFile("qrcode_$index.png");
}
echo "Generated " . count($urls) . " QR codes!";
use Endroid\QrCode\ErrorCorrectionLevel;
// Four levels available:
ErrorCorrectionLevel::LOW // ~7% recovery
ErrorCorrectionLevel::MEDIUM // ~15% recovery
ErrorCorrectionLevel::QUARTILE // ~25% recovery
ErrorCorrectionLevel::HIGH // ~30% recovery (recommended)