Gerador de QR Codes em C# (.NET) com a biblioteca QRCoder
Os QR Codes se tornaram uma parte essencial da web moderna e dos aplicativos móveis. Eles são usados para transferência rápida de links, dados de contato, senhas de Wi-Fi, detalhes de pagamento e muito mais. No ecossistema C# (.NET), uma das bibliotecas mais populares e fáceis de usar para gerar QR Codes é a QRCoder. Neste artigo, vamos detalhar como instalar a biblioteca, criar um QR Code simples e complexo, e salvá-lo em vários formatos (PNG, SVG).
O que é QRCoder?
QRCoder é uma biblioteca leve e de alto desempenho de código aberto para .NET (suporta .NET Framework 4.6+ e .NET Core/.NET 5+). Ela não requer dependências externas, exceto a biblioteca padrão System.Drawing para imagens raster. Principais recursos:
- Geração de QR Codes a partir de texto, URL, contatos (vCard), configurações de Wi-Fi, SMS, e-mail e outros formatos.
- Configuração do nível de correção de erros (L, M, Q, H).
- Seleção da versão do QR Code (tamanho da matriz).
- Exportação para PNG, BMP, SVG, XAML, EPS, PostScript e HTML.
- Suporte a cores, fundo, transparência e logotipos personalizados.
Instalação no projeto C#
A instalação da biblioteca QRCoder é feita através do NuGet Package Manager. Abra o console do gerenciador de pacotes ou use o .NET CLI:
dotnet add package QRCoderOu através do Package Manager Console:
Install-Package QRCoderExemplo básico — geração de um QR Code simples
Vamos criar um aplicativo de console que gera um QR Code para a string "https://pythonlib.ru" e o salva em um arquivo PNG.
using QRCoder;using System.Drawing;
string url = "https://pythonlib.ru";QRCodeGenerator qrGenerator = new QRCodeGenerator();QRCodeData qrCodeData = qrGenerator.CreateQrCode(url, QRCodeGenerator.ECCLevel.Q);QRCode qrCode = new QRCode(qrCodeData);
// Geração da imagem (pixels)Bitmap qrCodeImage = qrCode.GetGraphic(20);
// Salvando no arquivoqrCodeImage.Save("qrcode.png", System.Drawing.Imaging.ImageFormat.Png);
Console.WriteLine("QR Code criado: qrcode.png");Neste exemplo:
ECCLevel.Q— nível de correção de erros (25% dos dados podem ser danificados).GetGraphic(20)— tamanho de um módulo (quadrado) em pixels.- O resultado é um PNG preto e branco.
Personalização da aparência — cor, logotipo, SVG
O QRCoder permite personalizar flexivelmente a aparência do QR Code. Vamos considerar um exemplo com fundo colorido, módulos escuros e um logotipo incorporado.
using QRCoder;using System.Drawing;
string data = "https://pythonlib.ru";QRCodeGenerator qrGenerator = new QRCodeGenerator();QRCodeData qrCodeData = qrGenerator.CreateQrCode(data, QRCodeGenerator.ECCLevel.Q);QRCode qrCode = new QRCode(qrCodeData);
// Configuração de corColor darkColor = Color.FromArgb(52, 73, 94); // azul escuroColor lightColor = Color.FromArgb(236, 240, 241); // cinza claro
// Geração com logotipo (o logotipo deve estar no centro)Bitmap logo = new Bitmap("logo.png");Bitmap qrCodeImage = qrCode.GetGraphic(20, darkColor, lightColor, logo);
qrCodeImage.Save("qrcode_color.png", System.Drawing.Imaging.ImageFormat.Png);Console.WriteLine("QR Code colorido com logotipo salvo.");Observe: para funcionar corretamente com o logotipo, recomenda-se usar o nível de correção de erros ECCLevel.Q ou ECCLevel.H, pois o logotipo cobre parte dos dados.
Exportação para SVG (formato vetorial)
Se você precisar de um QR Code escalável (por exemplo, para impressão), use o renderizador SVG. Para isso, instale o pacote adicional QRCoder.Svg:
Também na biblioteca
Frameworks CLI para Java: visão geral e comparação das melhores ferramentas
Bibliotecas WebSocket para Node.js: ws, Socket.IO, uWS — visão geral completa
gRPC em Rust: bibliotecas Tonic e Grpc-rs com exemplos
Cliente HTTP para Kotlin: Principais bibliotecas para trabalhar com rede
Symfony/Console para PHP: guia completo com exemplos