Генератор QR-кодов на PHP: обзор лучших библиотек
QR-коды стали неотъемлемой частью современного веба. Они используются для быстрого доступа к ссылкам, передачи контактных данных, авторизации в сервисах и даже для оплаты. Если вы разрабатываете на PHP и хотите внедрить генерацию QR-кодов на своём сайте, вам не нужно изобретать велосипед — существуют проверенные библиотеки, которые справляются с этой задачей за пару строк кода.
В этой статье мы разберём три популярных решения: классическую phpqrcode, современную endroid/qr-code и лёгкую chillerlan/php-qrcode. Вы узнаете, как установить каждую из них, сгенерировать QR-код и вывести его на экран или сохранить в файл.
1. Библиотека phpqrcode (классический вариант)
Это одна из первых библиотек для генерации QR-кодов на PHP. Она не требует внешних зависимостей, работает «из коробки» и до сих пор используется на многих legacy-проектах. Основной недостаток — отсутствие поддержки современных стандартов PSR и Composer (хотя её можно установить вручную).
Установка
Скачайте архив с SourceForge и распакуйте в папку вашего проекта. Подключите файл qrlib.php:
require_once 'phpqrcode/qrlib.php';
Пример генерации и вывода PNG
<?php
require_once 'phpqrcode/qrlib.php';
// Данные для кодирования
$text = 'https://pythonlib.ru';
// Путь для сохранения файла
$filename = 'qrcode.png';
// Генерация QR-кода с уровнем коррекции L (7%) и размером 10
QRcode::png($text, $filename, QR_ECLEVEL_L, 10, 2);
// Вывод изображения в браузер
header('Content-Type: image/png');
QRcode::png($text, false, QR_ECLEVEL_L, 10, 2);
?>
Второй параметр false означает, что изображение выводится напрямую в браузер, а не сохраняется в файл.
2. Библиотека endroid/qr-code (современная и гибкая)
Это наиболее популярное решение на Packagist. Библиотека поддерживает PSR-4, легко интегрируется с любым фреймворком (Laravel, Symfony) и позволяет настраивать цвета, размер, отступы и даже добавлять логотип.
Установка через Composer
composer require endroid/qr-code
Базовый пример генерации
<?php
require 'vendor/autoload.php';
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
$qrCode = QrCode::create('https://pythonlib.ru')
->setSize(300)
->setMargin(10);
$writer = new PngWriter();
$result = $writer->write($qrCode);
// Вывод в браузер
header('Content-Type: '.$result->getMimeType());
echo $result->getString();
?>
QR-код с логотипом
<?php
use Endroid\QrCode\Logo\Logo;
use Endroid\QrCode\Color\Color;
$logo = Logo::create('path/to/logo.png')
->setResizeToWidth(60);
$qrCode = QrCode::create('https://pythonlib.ru')
->setSize(400)
->setForegroundColor(new Color(0, 123, 255)); // синий цвет
$writer = new PngWriter();
$result = $writer->write($qrCode, $logo);
header('Content-Type: image/png');
echo $result->getString();
?>
3. Библиотека chillerlan/php-qrcode (лёгкая и быстрая)
Отличный выбор, если вам нужна минимальная зависимость и высокая производительность. Библиотека поддерживает все стандартные режимы кодирования, маски и уровни коррекции ошибок. Идеально подходит для высоконагруженных проектов.
Установка
composer require chillerlan/php-qrcode
Пример генерации
<?php
require 'vendor/autoload.php';
use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions;
$options = new QROptions([
'outputType' => QRCode::OUTPUT_IMAGE_PNG,
'eccLevel' => QRCode::ECC_L, Также в библиотеке
Валидация данных в TypeScript: библиотеки, подходы и примеры кода
golangci-lint для Go: полное руководство с примерами
Парсинг HTML в TypeScript: библиотеки, инструменты и примеры