Biblioteca go-qrcode: generación de códigos QR en Go (Golang)
\n\nLos 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.
¿Qué es go-qrcode?
\n\ngo-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.
Instalación
\n\nLa instalación de la biblioteca se realiza con el comando estándar go get:
go get github.com/skip2/go-qrcode\n\nDespués de esto, puedes importarla en tu proyecto:
\n\nimport (\n "github.com/skip2/go-qrcode"\n)\n\nCaracterí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
Ejemplos de código
\n\n1. Código QR más simple
\n\nGeneremos un código QR para una URL y guardémoslo en un archivo:
\n\npackage 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\nEn este ejemplo, usamos el nivel medio de corrección de errores (qrcode.Medium) y un tamaño de imagen de 256x256 píxeles.
2. Configuración de colores
\n\nSi necesitas un color de código QR no estándar, usa la estructura qrcode.Config:
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\n3. Obtener PNG como bytes
\n\nA 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():
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\n4. Generación con tamaño mínimo
\n\nSi 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:
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\nNiveles de corrección de errores
\n\nLa biblioteca admite cuatro niveles de corrección de errores:
\n\n| Constante | \nNivel | \n% de datos recuperables | \n
|---|---|---|
qrcode.Low | \n Bajo | \n~7% | \n
qrcode.Medium | \n Medio | \n~15% | \n
qrcode.High | \n Alto | \n~25% | \n
qrcode.Highest | \n Más alto | \n~30% | \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\nConclusión
\n\nLa 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.
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.
¡Esperamos que este artículo te haya sido útil! Si tienes preguntas, escríbelas en los comentarios.
También en la biblioteca
Limitación de Tasa en Kotlin: bibliotecas e implementación
Redis-rs para Rust: guía completa con ejemplos
Procesamiento de JSON en Kotlin: bibliotecas y ejemplos de código
Event Bus y el patrón Observer en PHP: implementación y ejemplos
Monitoreo de aplicaciones TypeScript: bibliotecas, herramientas y configuración