Generación de códigos QR en PHP: biblioteca phpqrcode y guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Generación de códigos QR en PHP con la biblioteca phpqrcode

\n\n

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, conectarse a Wi-Fi y mucho más. En este artículo, analizaremos la popular biblioteca PHP phpqrcode, que permite generar códigos QR de forma fácil y rápida en el lado del servidor. Es la solución ideal para un sitio educativo donde se necesita mostrar visualmente el trabajo con códigos QR.

\n\n

¿Qué es phpqrcode?

\n

phpqrcode es una biblioteca ligera pero potente para generar códigos QR en PHP puro. No requiere la instalación de extensiones adicionales (como GD o Imagick), aunque las admite si están presentes. La biblioteca puede crear códigos QR de varias versiones (de la 1 a la 40), con diferentes niveles de corrección de errores (L, M, Q, H) y guardar el resultado en PNG, GIF o JPEG. La principal ventaja es la facilidad de uso: basta con incluir un archivo y llamar a una función.

\n\n

Instalación y configuración

\n

Puede descargar la biblioteca desde el repositorio oficial en GitHub o SourceForge. Para instalarla, simplemente copie el archivo phpqrcode.php en su proyecto. Una forma alternativa es a través de Composer:

\n\n
composer require phpqrcode/phpqrcode
\n\n

Después de la instalación, incluya la biblioteca en su script PHP:

\n\n
<?php\n// Si se instaló manualmente\ninclude 'phpqrcode.php';\n\n// O a través de Composer\nrequire 'vendor/autoload.php';\n?>
\n\n

Ejemplo básico: generación de un código QR

\n

El ejemplo más simple es crear un código QR que contenga una cadena de texto o una URL. Para ello, se utiliza el método estático QRcode::png():

\n\n
<?php\n$text = "https://pythonlib.ru";\n$filename = "qrcode.png"; // Si no se especifica, muestra la imagen directamente\n$errorCorrectionLevel = 'L'; // Nivel de corrección: L, M, Q, H\n$matrixPointSize = 10; // Tamaño del punto (1-10)\n\n// Generación y guardado en archivo\nQRcode::png($text, $filename, $errorCorrectionLevel, $matrixPointSize, 2);\n\necho "Código QR guardado como $filename";\n?>
\n\n

Si se omite el segundo parámetro, la biblioteca mostrará la imagen PNG directamente en el navegador:

\n\n
<?php\nheader('Content-Type: image/png');\nQRcode::png('https://pythonlib.ru', false, 'H', 8, 2);\n?>
\n\n

Personalización de la apariencia: color y tamaño

\n

El código QR estándar es en blanco y negro. Para hacerlo colorido o cambiar el fondo, utilice las funciones avanzadas. La biblioteca permite definir colores mediante un array:

\n\n
<?php\n$text = "¡Hola, PythonLib!";\n$filename = "color_qr.png";\n\n// Parámetros: [R, G, B] para módulos y fondo\n$config = [\n    'module' => [52, 73, 94], // Azul oscuro\n    'background' => [236, 240, 241] // Gris claro\n];\n\nQRcode::png($text, $filename, 'M', 10, 2, false, $config);\n?>
\n\n

Para un ajuste preciso del tamaño, utilice el parámetro $matrixPointSize (de 1 a 10). Cuanto mayor sea el valor, más grande será el código QR. También puede definir $quietZone (el borde blanco alrededor del código) como el último parámetro en el método png().

\n\n

Generación de un código QR para Wi-Fi

\n

Una de las tareas más populares es crear un código QR para conectarse a una red Wi-Fi. El formato de los datos debe cumplir con la especificación:

\n\n
<?php\n$ssid = "MiRedCasa";\n$password = "secreto123";\n$encryption = "WPA"; // WPA, WEP o vacío para red abierta\n\n$wifiString = "WIFI:T:$encryption;S:$ssid;P:$password;;";\n\nQRcode::png($wifiString, "wifi_qr.png", 'Q', 10, 2);\necho "¡Código QR para Wi-Fi listo!";\n?>
\n\n

Creación de un código QR para vCard (contactos)

\n

Un código QR puede contener una tarjeta de presentación vCard. Esto es útil para agregar un contacto rápidamente al teléfono:

\n\n
<?php\n$vcard = "BEGIN:VCARD\\n";\n$vcard .= "VERSION:3.0\\n";\n$vcard .= "FN:Iván Petrov\\n";\n$vcard .= "TEL:+7-123-456-78-90\\n";\n$vcard .= "EMAIL:ivan@exampl                    

Recommendations