Crear códigos QR con PHP y qr code

Generar imagen de código QR con PHP

Ya vimos cómo generar códigos de barras con PHP, ahora vamos a ver cómo crear códigos QR con PHP. Me parece que los códigos QR o QR codes pueden llevar más datos y metadatos, y que son legibles por la mayoría de dispositivos inteligentes (de hecho ya programamos un lector de códigos QR con Android).

Veamos entonces cómo generar estos códigos QR en forma de imagen, darles color de fondo, tamaño, calidad y muchas cosas más con una librería llamada qr code que puedes encontrar aquí.

Nota: recuerda que ya hicimos esto con AngularJS.

Composer y la librería qr code

Si no tienes composer, mira aquí cómo instalarlo. En caso de que no quieras usar Composer, te invito a ver las ventajas de usarlo y una introducción al mismo.

Por otro lado, si ya tienes un proyecto de PHP y quieres adaptarlo a Composer, mira este artículo.

Luego de que composer esté instalado y listo para ser llamado, instala qr code con:

composer require endroid/qr-code

Espera a que se instale, incluye el autoload en donde sea necesario y ya podemos comenzar a generar códigos QR.

Primer código QR generado con PHP

Veamos un primer acercamiento al generador de códigos QR. En este caso vamos a generar una imagen con el código QR y la vamos a mostrar en el navegador.

Declaramos que vamos a usar la clase QrCode de Endroid\QrCode y luego creamos una instancia de la misma pasándole el texto o mensaje que queremos guardar en el código QR.

Finalmente, para mostrarlo en el navegador enviamos un encabezado especial y luego imprimimos el código QR, generando así una imagen.

La salida es esta:

Primer código QR generado con PHP

Primer código QR generado con PHP

Con eso hemos generado nuestro primer código QR. Veamos más ejemplos.

Forzar descarga de código QR con PHP

En este ejemplo vamos a hacer que el código QR sea descargado en lugar de ser mostrado. El código PHP queda así:

Recomiendo ver cómo forzar la descarga de un archivo con PHP. Lo que se hace es agregar dos encabezados extra para indicar al navegador que debe descargarlo en lugar de intentar mostrarlo.

Si visitamos el ejemplo, se descargará el código QR.

Guardar código QR en el disco duro

Tal vez en algún momento se necesite guardar el código QR en lugar de mostrarlo o forzar su descarga. Para ello, el creador de la librería ha creado el método writeFile de la clase QrCode que acepta la ruta absoluta.

Vamos a ver un ejemplo en donde generamos el código QR y lo guardamos en el sistema de archivos.

Si todo va bien, entonces tendremos una imagen en la ruta en donde el script fue ejecutado.

Personalizar códigos QR

Ya vimos cómo guardar, mostrar o descargar los códigos QR pero no hemos visto otras importantes cosas que podemos hacer. Vamos a ver algunas cosas que podemos cambiar del código, como el tamaño, color, etiqueta y otras cosas.

Recuerda que puedes ver todas las opciones en el repositorio. Abajo explicaré algunas personalizaciones más importantes y al final pondré el código PHP necesario así como el código QR generado.

Tamaño del código QR

Esto es especificado en pixeles, el argumento que se pasa debe ser entero y eso definirá tanto la anchura como la altura del código QR, pues es un cuadrado.

El método es setSize.

Márgenes del código QR

Igual se puede agregar un margen al código, que va desde 0 hasta el número que quieras (respetará el tamaño del código QR, es decir, es independiente). Llama a la función setMargin para configurarlo.

Codificación

Al menos yo hablo español, y con el español tenemos letras ñ, acentos y todas esas cosas. Así que el UTF 8 viene a salvarnos en muchos casos. Por ello es que si vas a usar unas de estas cosas pongas la codificación del código QR con setEncoding.

Logotipo

En el centro del código QR podemos agregar otra imagen que será el logotipo o logo. Para alcanzar esto se llama a setLogoPath, pasando la ruta de la imagen.

Si quieres modificar el tamaño (este no debe ser cuadrado) llama a setLogoSize($anchura, $altura).

Colores

Los colores se definen con un arreglo que tiene las claves r, g, b y a. Las tres primeras letras son de los niveles rojo, verde y azul. La última es del alpha, va del 0 al 127 y entre mayor alpha obtienes más transparencia.

No recomiendo dejar la transparencia en un valor alto, pues tal vez haya problemas con la lectura.

Pero bueno, una vez definidos los colores, llamamos a setBackgroundColor para el color de fondo y setForegroundColor para el color del primer plano.

Etiqueta

En el pie del código QR podemos agregar una etiqueta o mensaje llamando a setLabel($texto, $tamanioDeLaFuente, $rutaDeLaFuente, $alineacion).

El texto es una cadena, el tamaño de la fuente es el tamaño en pixeles que se va a usar para escribir el mensaje.

La ruta de la fuente es la ubicación de la fuente con extensión otf, y finalmente la alineación puede ser a la izquierda, en el centro o a la derecha.

Código QR generado al final

Bueno, este es el resultado final. Que quede claro que fue para mostrar la personalización y no espero que sea legible o agradable.

Código QR generado con PHP

Código QR generado con PHP

El código de PHP que ocupé fue este:

Y así es como terminamos por hoy. Lee más sobre PHP aquí.

Crear códigos QR con PHP y qr code

Por parzibyte Tiempo de lectura: 4 min
2