Gerador de QR Codes em Go (Golang): 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

Biblioteca go-qrcode: geração de QR Codes em Go (Golang)

\n\n

Os QR Codes se tornaram parte essencial da web moderna e dos aplicativos móveis. Eles são usados para acesso rápido a links, transmissão de dados de contato, autenticação e muito mais. Se o seu projeto é escrito em Go (Golang), uma das melhores bibliotecas para criar QR Codes é a go-qrcode. Neste artigo, vamos analisar detalhadamente seus recursos, instalação e exemplos de uso.

\n\n

O que é go-qrcode?

\n\n

go-qrcode é uma implementação pura de um gerador de QR Codes na linguagem Go. Ela não possui dependências externas (além da biblioteca padrão) e suporta todas as funções principais: configuração de tamanho, nível de correção de erros, cor e fundo. A biblioteca pode gerar tanto imagens PNG quanto retornar dados binários brutos para processamento posterior.

\n\n

Instalação

\n\n

A instalação da biblioteca é feita com o comando padrão go get:

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

Após isso, você pode importá-la no seu projeto:

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

Principais recursos

\n\n
    \n
  • Geração de imagens PNG — o caso de uso mais popular.
  • \n
  • Configuração do nível de correção de erros — Baixo, Médio, Alto, Máximo.
  • \n
  • Alteração de tamanho — de 21x21 a 177x177 módulos.
  • \n
  • Configuração de cores — é possível definir a cor do primeiro plano e do fundo.
  • \n
  • Suporte a Unicode — permite codificar qualquer texto, incluindo caracteres acentuados.
  • \n
  • Saída em formato bruto — array de bytes para processamento personalizado.
  • \n
\n\n

Exemplos de código

\n\n

1. QR Code mais simples

\n\n

Vamos gerar um QR Code para uma URL e salvá-lo em um arquivo:

\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

Neste exemplo, usamos o nível médio de correção de erros (qrcode.Medium) e o tamanho da imagem de 256x256 pixels.

\n\n

2. Configuração de cores

\n\n

Se você precisar de uma cor personalizada para o QR Code, use a estrutura 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("Olá, mundo!", qrcode.Highest)\n    if err != nil {\n        panic(err)\n    }\n\n    // Configuração de cor\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} // branco\n\n    err = qr.WriteFile(256, "custom_qrcode.png")\n    if err != nil {\n        panic(err)\n    }\n}
\n\n

3. Obtendo PNG como bytes

\n\n

Às vezes, é necessário não salvar o arquivo, mas sim entregar a imagem via HTTP ou processá-la posteriormente. Para isso, use o 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("Tamanho do PNG: %d bytes\\n", len(pngBytes))\n    // Agora pngBytes pode ser enviado em uma resposta HTTP ou salvo\n}
\n\n

4. Geração com tamanho mínimo

\n\n

Se você quiser obter o menor QR Code possível, use o método ToQRTerminal() para depuração no terminal, ou defina o tamanho mínimo do 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)                    

Recommendations