Generador de códigos QR en Go (Golang): librería go-qrcode
Los códigos QR se han convertido en una parte esencial de la web moderna, desde enlaces a sitios web hasta la transmisión de datos de contacto. Si desarrolla en Go (Golang) y desea integrar la generación de códigos QR en su aplicación, la librería go-qrcode es la solución ideal. Es ligera, está completamente escrita en Go sin dependencias externas y admite todas las versiones principales de códigos QR.
Instalación y configuración
Para comenzar, instale el paquete a través del administrador de módulos estándar de Go:
go get github.com/skip2/go-qrcodeLa librería no requiere librerías de sistema adicionales; todo funciona de fábrica. Se admite Go versión 1.13 y superior.
Uso básico: creando nuestro primer código QR
La forma más sencilla de generar un código QR es usar la función WriteFile. Crea una imagen PNG directamente en el disco:
package main
import ( "github.com/skip2/go-qrcode")
func main() { err := qrcode.WriteFile("https://pythonlib.ru", qrcode.Medium, 256, "qr.png") if err != nil { panic(err) }}En este ejemplo, creamos un código QR para la URL https://pythonlib.ru con un nivel de corrección de errores Medium y un tamaño de 256x256 píxeles. El resultado se guarda en el archivo qr.png.
Parámetros de generación
La función WriteFile acepta cuatro argumentos:
- content (string) — datos para codificar (texto, URL, número de teléfono, etc.)
- level (RecoveryLevel) — nivel de corrección de errores. Valores disponibles:
qrcode.Low— 7% de recuperaciónqrcode.Medium— 15% de recuperaciónqrcode.High— 25% de recuperaciónqrcode.Highest— 30% de recuperación
- size (int) — tamaño de la imagen en píxeles (generalmente de 128 a 1024)
- filename (string) — ruta al archivo de salida (la extensión .png es obligatoria)
Generación de código QR en memoria (sin guardar en disco)
Si necesita obtener el código QR como bytes PNG (por ejemplo, para enviarlo a través de HTTP o guardarlo en una base de datos), use el método PNG:
package main
import ( "bytes" "image/png" "log" "github.com/skip2/go-qrcode")
func main() { // Creamos el código QR qr, err := qrcode.New("https://pythonlib.ru", qrcode.Medium) if err != nil { log.Fatal(err) }
// Obtenemos la imagen como *image.RGBA img := qr.Image(256)
// Codificamos en PNG y obtenemos los bytes var buf bytes.Buffer err = png.Encode(&buf, img) if err != nil { log.Fatal(err) }
// Ahora buf.Bytes() contiene los datos PNG log.Printf("Código QR generado, tamaño: %d bytes", buf.Len())}Este enfoque es útil para servidores web: puede entregar el código QR directamente en la respuesta HTTP sin crear archivos temporales.
Configuración de colores y fondo
Por defecto, el código QR es blanco y negro, pero la librería permite cambiar los colores. Use los métodos ForegroundColor y BackgroundColor:
package main
import ( "image/color" "log" "github.com/skip2/go-qrcode")
func main() { qr, err := qrcode.New("https://pythonlib.ru", qrcode.High) if err != nil { log.Fatal(err) }
// Establecemos color azul para los módulos y blanco para el fondo qr.ForegroundColor = color.RGBA{0, 0, 255, 255} // azul qr.BackgroundColor = color.RGBA{255, 255, 255, 255} // blanco
// Guardamos con los nuevos colores err = qr.WriteFile(256, "colorful_qr.png") if err != nil { log.Fatal(err) }} También en la biblioteca
Análisis de HTML en Java: bibliotecas Jsoup y HtmlUnit
Métricas de Prometheus en Node.js: biblioteca prom-client
Registro para JavaScript (Node.js): las mejores soluciones
Parseo de HTML en Swift: librería SwiftSoup para iOS/macOS