Cómo generar códigos QR en Laravel con Simple QrCode (PNG y SVG)

- Andrés Cruz - EN In english

Video thumbnail

Los códigos QR (Quick Response) son una evolución de los códigos de barras bidimensionales que vemos a diario en los productos que compramos. Son capaces de almacenar distintos tipos de información: números, texto, URLs, datos de contacto, entre otros. Precisamente esa versatilidad —tener la información codificada sin exponerla directamente— es lo que los ha convertido en el medio por excelencia para compartir recursos de forma rápida, tanto en productos físicos como en sitios web.

Para leer un código QR no necesitas ninguna aplicación especial: basta con abrir la cámara de tu teléfono inteligente, apuntarla al código y el sistema operativo se encarga del resto.

Un código QR luce como el siguiente:

Ejemplo de código QR generado con Laravel

Laravel, al ser el framework PHP por excelencia para el desarrollo web, cuenta con un ecosistema enorme de paquetes de terceros que amplían sus capacidades sin necesidad de reinventar la rueda. Generar códigos QR no es la excepción: existe un paquete de Laravel desarrollado específicamente para este framework que nos permite crear y personalizar códigos QR con muy pocas líneas de código.

En esta entrada vamos a ver cómo implementar un generador de códigos QR en Laravel, paso a paso: desde la instalación del paquete hasta la personalización del QR con colores, tamaño e incluso una imagen superpuesta.

Instalar el paquete Simple QrCode en Laravel

El paquete que vamos a utilizar es SimpleSoftwareIO/simple-qrcode, uno de los más populares y mantenidos para generar códigos QR en PHP. Puedes revisar su documentación completa en la página oficial en GitHub.

Para instalarlo, ejecuta el siguiente comando en la terminal de tu proyecto Laravel:

composer require simplesoftwareio/simple-qrcode "~4"

Asegúrate de tener Composer instalado y tu entorno de Laravel correctamente configurado (PHP, extensiones necesarias, etc.) antes de continuar.

Una vez finalizada la instalación, el paquete queda disponible de inmediato gracias al package discovery automático de Laravel: no necesitas registrar ningún Service Provider ni Alias manualmente.

Generar un código QR simple con Laravel

Con el paquete instalado, abre el controlador donde quieras implementar la lógica y agrega la siguiente función:

use SimpleSoftwareIO\QrCode\Facades\QrCode;


    public function qr_generate()
    {
        // Generar QR en formato SVG con color rojo
        //QrCode::format('svg')->size(700)->color(255,0,0)->generate('Desarrollo libre Andres', '../public/qrcodes/qrcode.svg');

        // Generar QR en formato PNG con logo superpuesto
        QrCode::format('png')
            ->size(700)
            ->color(255, 0, 0)
            ->merge('https://www.desarrollolibre.net/assets/img/logo.png', .3, true)
            ->generate('Desarrollo libre Andres', '../public/qrcodes/qrcode.png');
    }

Explicación del código

El flujo es bastante directo. Usamos el Facade QrCode que expone una interfaz fluida (encadenamiento de métodos) para construir el QR con la configuración que necesitemos:

  • format('png') — Define el formato de salida de la imagen. Puedes usar 'png' o 'svg'. El formato SVG es ideal para web porque escala sin perder calidad, mientras que PNG es más compatible cuando necesitas una imagen rasterizada.
  • size(700) — Establece el tamaño del QR en píxeles (ancho y alto son iguales, ya que siempre es cuadrado).
  • color(255, 0, 0) — Define el color de los módulos del QR en formato RGB. En este ejemplo, rojo puro. El fondo es blanco por defecto, aunque también puede personalizarse con backgroundColor().
  • merge() — Superpone una imagen (por ejemplo, un logotipo) en el centro del código QR. Recibe tres parámetros: la ruta o URL de la imagen, el porcentaje de tamaño relativo al QR (.3 equivale al 30 %) y un booleano para indicar si la imagen debe escalarse de forma absoluta.
  • generate('texto', 'ruta') — Recibe el contenido a codificar (una URL, texto libre, etc.) y la ruta donde se almacenará el archivo generado dentro del proyecto.

Personalizar el código QR

El paquete ofrece bastante flexibilidad para ajustar la apariencia del QR. A la hora de generar y guardar el código en la carpeta public de tu proyecto, los parámetros fundamentales que debes configurar a través del Facade QrCode son:

  • Formato — format('png') o format('svg')
  • Tamaño — size(pixels)
  • Color — color(R, G, B)
  • Contenido a codificar — el texto o URL que se convierte en QR

Con esos cuatro parámetros básicos ya obtienes un resultado como el siguiente:

Código QR generado con Laravel y Simple QrCode

Más ejemplos con Simple QrCode para Laravel

Video thumbnail

A continuación, algunos ejemplos concretos del paquete simplesoftwareio/simple-qrcode para que los adaptes directamente a tu proyecto. Si aún no instalaste el paquete con la versión fijada, puedes hacerlo también así:

$ composer require simplesoftwareio/simple-qrcode

Estos son algunos ejemplos representativos que ilustran las combinaciones más habituales:

// QR en SVG con color rojo
QrCode::format('svg')->size(700)->color(255,0,0)->generate('Desarrollo libre Andres', '../public/qrcodes/qrcode.svg');

// QR en PNG con logo superpuesto (merge)
QrCode::format('png')->size(700)->color(255, 0, 0)->merge('/assets/img/logo.png', .3, true)->generate('Desarrollo libre Andres', '../public/qrcodes/qrcode.png');

El paquete tiene una API muy autodescriptiva: format() define el tipo de imagen, color() acepta valores RGB, size() controla las dimensiones, merge() incrusta un logotipo y generate() recibe el texto a codificar junto con la ruta de destino del archivo resultante.

Como puedes ver, con unos pocos métodos encadenados es posible controlar el formato, tamaño, color y contenido del QR, que finalmente se genera y almacena en la ubicación que indiques dentro de tu aplicación —en este ejemplo, dentro de la carpeta public de Laravel.

Aprende a instalar el paquete simplesoftwareio/simple-qrcode y a generar códigos QR en Laravel personalizados con tamaño, color RGB y logotipo superpuesto. Ejemplos prácticos en PNG y SVG.


Únete a la comunidad de desarrolladores que han decidido dejar de picar código y empezar a construir productos reales. Recibe mis mejores trucos de arquitectura cada semana:

Acepto recibir anuncios de interes sobre este Blog.