Biblioteca go-qrcode: geração de QR Codes em Go (Golang)
\n\nOs 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.
O que é go-qrcode?
\n\ngo-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.
Instalação
\n\nA instalação da biblioteca é feita com o comando padrão go get:
go get github.com/skip2/go-qrcode\n\nApós isso, você pode importá-la no seu projeto:
\n\nimport (\n "github.com/skip2/go-qrcode"\n)\n\nPrincipais 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
Exemplos de código
\n\n1. QR Code mais simples
\n\nVamos gerar um QR Code para uma URL e salvá-lo em um arquivo:
\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\nNeste exemplo, usamos o nível médio de correção de erros (qrcode.Medium) e o tamanho da imagem de 256x256 pixels.
2. Configuração de cores
\n\nSe você precisar de uma cor personalizada para o QR Code, use a estrutura qrcode.Config:
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\n3. 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():
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\n4. Geração com tamanho mínimo
\n\nSe 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:
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) Também na biblioteca
Serialização de objetos em TypeScript: bibliotecas, métodos e exemplos
Trabalhando com Excel em Rust: bibliotecas para leitura e escrita
Validação de dados em Rust: visão geral de bibliotecas e frameworks
Bibliotecas WebSocket TypeScript: ws, Socket.IO, uWebSockets.js