Generador de códigos QR en PHP: revisión de las mejores bibliotecas
Los códigos QR se han convertido en una parte esencial de la web moderna. Se utilizan para acceder rápidamente a enlaces, transferir datos de contacto, autenticarse en servicios e incluso para pagos. Si desarrollas en PHP y deseas implementar la generación de códigos QR en tu sitio, no necesitas reinventar la rueda: existen bibliotecas probadas que realizan esta tarea en solo un par de líneas de código.
En este artículo, analizaremos tres soluciones populares: la clásica phpqrcode, la moderna endroid/qr-code y la ligera chillerlan/php-qrcode. Aprenderás cómo instalar cada una, generar un código QR y mostrarlo en pantalla o guardarlo en un archivo.
1. Biblioteca phpqrcode (opción clásica)
Esta es una de las primeras bibliotecas para generar códigos QR en PHP. No requiere dependencias externas, funciona "de fábrica" y todavía se utiliza en muchos proyectos heredados. Su principal desventaja es la falta de soporte para los estándares modernos PSR y Composer (aunque se puede instalar manualmente).
Instalación
Descarga el archivo desde SourceForge y descomprímelo en la carpeta de tu proyecto. Incluye el archivo qrlib.php:
require_once 'phpqrcode/qrlib.php';Ejemplo de generación y salida PNG
<?phprequire_once 'phpqrcode/qrlib.php';
// Datos para codificar$text = 'https://pythonlib.ru';
// Ruta para guardar el archivo$filename = 'qrcode.png';
// Generación de código QR con nivel de corrección L (7%) y tamaño 10QRcode::png($text, $filename, QR_ECLEVEL_L, 10, 2);
// Mostrar la imagen en el navegadorheader('Content-Type: image/png');QRcode::png($text, false, QR_ECLEVEL_L, 10, 2);?>El segundo parámetro false significa que la imagen se muestra directamente en el navegador, no se guarda en un archivo.
2. Biblioteca endroid/qr-code (moderna y flexible)
Esta es la solución más popular en Packagist. La biblioteca es compatible con PSR-4, se integra fácilmente con cualquier framework (Laravel, Symfony) y permite personalizar colores, tamaño, márgenes e incluso agregar un logotipo.
Instalación mediante Composer
composer require endroid/qr-codeEjemplo básico de generación
<?phprequire '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);
// Mostrar en el navegadorheader('Content-Type: '.$result->getMimeType());echo $result->getString();?>Código QR con logotipo
<?phpuse Endroid\\QrCode\\Logo\\Logo;use Endroid\\QrCode\\Color\\Color;
$logo = Logo::create('ruta/al/logo.png') ->setResizeToWidth(60);
$qrCode = QrCode::create('https://pythonlib.ru') ->setSize(400) ->setForegroundColor(new Color(0, 123, 255)); // color azul
$writer = new PngWriter();$result = $writer->write($qrCode, $logo);
header('Content-Type: image/png');echo $result->getString();?>3. Biblioteca chillerlan/php-qrcode (ligera y rápida)
Una excelente opción si necesitas una dependencia mínima y un alto rendimiento. La biblioteca admite todos los modos de codificación estándar, máscaras y niveles de corrección de errores. Es ideal para proyectos de alta carga.
Instalación
composer require chillerlan/php-qrcodeEjemplo de generación
<?phprequire 'vendor/autoload.php';
use chillerlan\\QRCode\\QRCode;use chillerlan\\QRCode\\QROptions;
$options = new QROptions([ 'outputType' => QRCode::OUTPUT_IMAGE_PNG, 'eccLevel' => QRCode::ECC_L,