Generador de códigos QR en Go (Golang): biblioteca go-qrcode

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

Biblioteca go-qrcode: generación de códigos QR en Go (Golang)

\n\n

Los códigos QR se han convertido en una parte esencial de la web moderna y las aplicaciones móviles. Se utilizan para acceder rápidamente a enlaces, transferir datos de contacto, autenticación y mucho más. Si tu proyecto está escrito en Go (Golang), una de las mejores bibliotecas para crear códigos QR es go-qrcode. En este artículo, analizaremos en detalle sus capacidades, instalación y ejemplos de uso.

\n\n

¿Qué es go-qrcode?

\n\n

go-qrcode es una implementación pura de un generador de códigos QR en el lenguaje Go. No tiene dependencias externas (excepto la biblioteca estándar) y admite todas las funciones principales: configuración de tamaño, nivel de corrección de errores, color y fondo. La biblioteca puede generar tanto imágenes PNG como devolver datos binarios sin procesar para su posterior procesamiento.

\n\n

Instalación

\n\n

La instalación de la biblioteca se realiza con el comando estándar go get:

\n\n
go get github.com/skip2/go-qrcode
\n\n

Después de esto, puedes importarla en tu proyecto:

\n\n
import (\n    "github.com/skip2/go-qrcode"\n)
\n\n

Características principales

\n\n
    \n
  • Generación de imágenes PNG — el caso de uso más popular.
  • \n
  • Configuración del nivel de corrección de errores — Low, Medium, High, Highest.
  • \n
  • Cambio de tamaño — de 21x21 a 177x177 módulos.
  • \n
  • Configuración de colores — se puede definir el color del primer plano y del fondo.
  • \n
  • Soporte para Unicode — se puede codificar cualquier texto, incluido el cirílico.
  • \n
  • Salida en formato sin procesar — matriz de bytes para procesamiento personalizado.
  • \n
\n\n

Ejemplos de código

\n\n

1. Código QR más simple

\n\n

Generemos un código QR para una URL y guardémoslo en un archivo:

\n\n
package main\n\nimport (\n    "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n    err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qrcode.png")\n    if err != nil {\n        panic(err)\n    }\n}
\n\n

En este ejemplo, usamos el nivel medio de corrección de errores (qrcode.Medium) y un tamaño de imagen de 256x256 píxeles.

\n\n

2. Configuración de colores

\n\n

Si necesitas un color de código QR no estándar, usa la estructura qrcode.Config:

\n\n
package main\n\nimport (\n    "image/color"\n    "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n    qr, err := qrcode.New("¡Hola, mundo!", qrcode.Highest)\n    if err != nil {\n        panic(err)\n    }\n\n    // Configuración de color\n    qr.ForegroundColor = color.RGBA{R: 0, G: 150, B: 255, A: 255} // azul\n    qr.BackgroundColor = color.RGBA{R: 255, G: 255, B: 255, A: 255} // blanco\n\n    err = qr.WriteFile(256, "custom_qrcode.png")\n    if err != nil {\n        panic(err)\n    }\n}
\n\n

3. Obtener PNG como bytes

\n\n

A veces no es necesario guardar el archivo, sino entregar la imagen a través de HTTP o procesarla más. Para esto, usa el método PNG():

\n\n
package main\n\nimport (\n    "fmt"\n    "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n    qr, err := qrcode.New("https://example.com", qrcode.Low)\n    if err != nil {\n        panic(err)\n    }\n\n    pngBytes, err := qr.PNG(256)\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Printf("Tamaño del PNG: %d bytes\\n", len(pngBytes))\n    // Ahora pngBytes se puede enviar en una respuesta HTTP o guardar\n}
\n\n

4. Generación con tamaño mínimo

\n\n

Si deseas obtener el código QR más pequeño posible, usa el método ToQRTerminal() para depuración en terminal, o establece el tamaño mínimo del módulo:

\n\n
package main\n\nimport (\n    "fmt"\n    "github.com/skip2/go-qrcode"\n)\n\nfunc main() {\n    qr, err := qrcode.New("1234567890", qrcode.High)\n    if err != nil {\n        panic(err)\n    }\n\n    // Depuración en terminal\n    fmt.Println(qr.ToQRTerminal())\n\n    // O guardar con tamaño mínimo\n    err = qr.WriteFile(128, "minimal_qrcode.png")\n    if err != nil {\n        panic(err)\n    }\n}
\n\n

Niveles de corrección de errores

\n\n

La biblioteca admite cuatro niveles de corrección de errores:

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
ConstanteNivel% de datos recuperables
qrcode.LowBajo~7%
qrcode.MediumMedio~15%
qrcode.HighAlto~25%
qrcode.HighestMás alto~30%
\n\n

Elige un nivel más alto si el código QR se imprimirá en superficies que pueden dañarse (por ejemplo, embalaje). Un nivel más bajo permite codificar más datos en un código QR más pequeño.

\n\n

Conclusión

\n\n

La biblioteca go-qrcode es una solución simple, rápida y confiable para generar códigos QR en Go. Es adecuada tanto para proyectos pequeños como para sistemas de producción con altas cargas. La ausencia de dependencias externas facilita su integración, y la API intuitiva permite comenzar a trabajar en cuestión de minutos.

\n\n

Si necesitas funciones más avanzadas (por ejemplo, agregar un logotipo en el centro del código QR), puedes combinar go-qrcode con la biblioteca estándar image para el procesamiento adicional de imágenes.

\n\n

¡Esperamos que este artículo te haya sido útil! Si tienes preguntas, escríbelas en los comentarios.

Recommendations