Gerador de QR Code em Go (Golang) com a biblioteca go-qrcode

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Gerador de QR Code em Go (Golang): biblioteca go-qrcode



Os QR Codes se tornaram parte essencial da web moderna — desde links para sites até a transmissão de dados de contato. Se você desenvolve em Go (Golang) e deseja incorporar a geração de QR Codes em sua aplicação, a biblioteca go-qrcode é a solução ideal. Ela é leve, totalmente escrita em Go sem dependências externas e suporta todas as versões principais de QR Codes.



Instalação e configuração



Para começar, instale o pacote através do gerenciador de módulos padrão do Go:



go get github.com/skip2/go-qrcode


A biblioteca não requer bibliotecas de sistema adicionais — tudo funciona prontamente. Suporta Go versão 1.13 e superior.



Uso básico: criando seu primeiro QR Code



A maneira mais simples de gerar um QR Code é usar a função WriteFile. Ela cria uma imagem PNG diretamente no 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) }}


Neste exemplo, criamos um QR Code para a URL https://pythonlib.ru com nível de correção de erros Medium e tamanho de 256x256 pixels. O resultado é salvo no arquivo qr.png.



Parâmetros de geração



A função WriteFile aceita quatro argumentos:



  • content (string) — dados para codificar (texto, URL, número de telefone, etc.)
  • level (RecoveryLevel) — nível de correção de erros. Valores disponíveis:
    • qrcode.Low — 7% de recuperação
    • qrcode.Medium — 15% de recuperação
    • qrcode.High — 25% de recuperação
    • qrcode.Highest — 30% de recuperação
  • size (int) — tamanho da imagem em pixels (geralmente de 128 a 1024)
  • filename (string) — caminho para o arquivo de saída (extensão .png obrigatória)


Geração de QR Code em memória (sem salvar no disco)



Se você precisar obter o QR Code como bytes PNG (por exemplo, para enviar via HTTP ou salvar em um banco de dados), use o método PNG:



package main

import ( "bytes" "image/png" "log" "github.com/skip2/go-qrcode")

func main() { // Cria o QR Code qr, err := qrcode.New("https://pythonlib.ru", qrcode.Medium) if err != nil { log.Fatal(err) }

// Obtém a imagem como *image.RGBA img := qr.Image(256)

// Codifica em PNG e obtém os bytes var buf bytes.Buffer err = png.Encode(&buf, img) if err != nil { log.Fatal(err) }

// Agora buf.Bytes() contém os dados PNG log.Printf("QR Code gerado, tamanho: %d bytes", buf.Len())}


Esta abordagem é conveniente para servidores web: você pode entregar o QR Code diretamente na resposta HTTP, sem criar arquivos temporários.



Configuração de cores e fundo



Por padrão, o QR Code é preto e branco, mas a biblioteca permite alterar as cores. Use os métodos ForegroundColor e 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) }

// Define a cor azul para os módulos e branco para o fundo qr.ForegroundColor = color.RGBA{0, 0, 255, 255} // azul qr.BackgroundColor = color.RGBA{255, 255, 255, 255} // branco

// Salva com as novas cores err = qr.WriteFile(256, "colorful_qr.png") if err != nil { log.Fatal(err) }}

Recommendations