Генератор QR-кодов на PHP: библиотека phpqrcode и альтернативы

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Генератор 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,                    

Рекомендаций