Como gerar códigos QR em C# com um pacote NuGet
Gerar Códigos QR em aplicações .NET nunca foi tão simples. Com o pacote NuGet correto, você pode criar Códigos QR, personalizar sua aparência e salvá-los em múltiplos formatos de saída com apenas algumas linhas de código. IronQR oferece geração de Código QR de nível empresarial com suporte multiplataforma for .NET Core, .NET Framework e .NET 5-10.
Este tutorial demonstra como instalar o pacote NuGet IronQR e começar a gerar Códigos QR imediatamente. Seja você construindo sistemas de inventário, plataformas de emissão de ingressos para eventos ou aplicativos de marketing, o IronQR fornece as ferramentas necessárias para implementação profissional de Códigos QR.
!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}
Como Você Instala um Pacote NuGet de Código QR?
Instalar o IronQR através do Gerenciador de Pacotes NuGet leva apenas alguns segundos. Abra o Console do Gerenciador de Pacotes NuGet no Visual Studio e execute o seguinte comando, ou use o comando dotnet add package para ambientes CLI:
Install-Package IronQR
O pacote NuGet gerencia automaticamente todas as dependências, garantindo compatibilidade com seus frameworks-alvo. O IronQR suporta .NET Framework 4.6.2+, .NET Core 2.0+ e .NET 5-10, tornando-o uma biblioteca versátil para qualquer projeto no Visual Studio.
Antes de escrever qualquer código, você precisa de uma chave de licença de avaliação gratuita. Configure-a logo no início da inicialização de sua aplicação para que todas as chamadas subsequentes sejam autenticadas:
using IronQr;
// Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
using IronQr;
// Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
Imports IronQr
' Set license key before any IronQR operation
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
Com a chave de licença configurada, seu aplicativo está pronto para gerar, ler e personalizar Códigos QR sem marcas d'água nas imagens de saída.
Como Você Gera Seu Primeiro Código QR?
Criar seu primeiro Código QR requer um código mínimo. A classe QrWriter lida com a geração de códigos QR com padrões sensatos que funcionam bem para a maioria dos casos de uso:
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from text data
QrCode myQr = QrWriter.Write("Hello World");
// Save QR code as bitmap image
AnyBitmap qrImage = myQr.Save();
// Export to PNG file
qrImage.SaveAs("hello-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Generate a QR code from text data
QrCode myQr = QrWriter.Write("Hello World");
// Save QR code as bitmap image
AnyBitmap qrImage = myQr.Save();
// Export to PNG file
qrImage.SaveAs("hello-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Generate a QR code from text data
Dim myQr As QrCode = QrWriter.Write("Hello World")
' Save QR code as bitmap image
Dim qrImage As AnyBitmap = myQr.Save()
' Export to PNG file
qrImage.SaveAs("hello-qr.png")
Saída de Código QR

O método QrWriter.Write() aceita dados de string e retorna um objeto QrCode contendo o símbolo QR. O método Save() converte isso em um AnyBitmap, que suporta a codificação em vários formatos de imagem ou a exportação de dados vetoriais para um Caminho XAML. Esta abordagem funciona em Windows, macOS e Linux sem dependências específicas da plataforma -- ao contrário das bibliotecas que dependem de System.Drawing que são exclusivas para Windows a partir do .NET 6.
O padrão de três linhas acima cobre o cenário mais comum: codificar uma string, obter um bitmap e escrever um arquivo. Para uso em produção, você provavelmente passará strings de URL, identificadores de produto ou cargas úteis JSON em vez de texto simples.
Como Você Escolhe o Nível Correto de Correção de Erro?
Os Códigos QR suportam quatro níveis de correção de erro definidos no padrão ISO/IEC 18004 QR code standard que determinam quanto dano um código pode sustentar enquanto permanece escaneável. IronQR suporta todos os quatro níveis através da classe QrOptions:
| Nível | Capacidade de Recuperação | Ideal para |
|---|---|---|
| L (Baixo) | ~7% | Ambientes limpos, densidade máxima de dados |
| M (Médio) | ~15% | Uso geral (padrão) |
| Q (Quartil) | ~25% | Aplicações industriais |
| H (Alto) | ~30% | Logotipos, sinalização externa, oclusão parcial |
using IronQr;
using IronSoftware.Drawing;
// Configure high error correction level
var options = new QrOptions(QrErrorCorrectionNível.High);
// Generate QR code with options
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap image = qr.Save();
image.SaveAs("high-correction-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Configure high error correction level
var options = new QrOptions(QrErrorCorrectionNível.High);
// Generate QR code with options
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options);
AnyBitmap image = qr.Save();
image.SaveAs("high-correction-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Configure high error correction level
Dim options As New QrOptions(QrErrorCorrectionNível.High)
' Generate QR code with options
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/", options)
Dim image As AnyBitmap = qr.Save()
image.SaveAs("high-correction-qr.png")
Saída

Níveis mais altos de correção de erro criam símbolos QR mais densos com mais módulos brutos, permitindo que o código permaneça legível mesmo quando parcialmente obscurecido ou danificado. Para códigos que serão impressos em embalagens ou incorporados em logotipos, o nível H é a escolha certa. Para exibição exclusivamente digital, onde danos não são uma preocupação, o nível M equilibra capacidade de dados e confiabilidade.
Escolher o nível errado é uma fonte comum de falhas de leitura em produção. Se os seus códigos QR aparecerão em materiais físicos ou a distâncias variadas das câmeras, use o nível Q ou H e verifique o resultado com várias aplicações de scanner antes de implantar.
Como Personalizar a Aparência do Código QR?
IronQR oferece amplas opções de estilo através de QrStyleOptions, permitindo cores personalizadas, dimensões, margens e incorporação de logotipo. Códigos QR de marca têm um desempenho melhor em contextos de marketing porque associam visualmente o código com uma identidade conhecida:
using IronQr;
using IronSoftware.Drawing;
// Create styled QR code with custom colors
var styleOptions = new QrStyleOptions
{
Dimensions = 300, // Width and height in pixels
Margins = 10, // Quiet zone in pixels
Color = Color.DarkBlue,
BackgroundColor = Color.White
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap styledImage = qr.Save(styleOptions);
styledImage.SaveAs("styled-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Create styled QR code with custom colors
var styleOptions = new QrStyleOptions
{
Dimensions = 300, // Width and height in pixels
Margins = 10, // Quiet zone in pixels
Color = Color.DarkBlue,
BackgroundColor = Color.White
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap styledImage = qr.Save(styleOptions);
styledImage.SaveAs("styled-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Create styled QR code with custom colors
Dim styleOptions As New QrStyleOptions With {
.Dimensions = 300, ' Width and height in pixels
.Margins = 10, ' Quiet zone in pixels
.Color = Color.DarkBlue,
.BackgroundColor = Color.White
}
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim styledImage As AnyBitmap = qr.Save(styleOptions)
styledImage.SaveAs("styled-qr.png")
Saída de QR Estilizado

A propriedade Dimensions define tanto a largura quanto a altura em pixels. A propriedade Margins controla a zona de silêncio -- a borda branca ao redor do símbolo QR que os scanners usam para localizar o limite do código. Reduzir as margens abaixo do mínimo recomendado de 4 módulos pode causar falhas de leitura em dispositivos mais antigos.
Adicionar logotipos aos códigos QR aumenta o reconhecimento da marca. O sistema de estilo posiciona automaticamente logotipos enquanto mantém a capacidade de leitura — uma vantagem significativa sobre alternativas de código aberto que exigem cálculos de posicionamento manuais.
Como Salvar Códigos QR em Diferentes Formatos de Saída?
IronQR suporta múltiplos formatos de saída, incluindo PNG, JPEG, GIF, TIFF, BMP e SVG. O método SaveAs detecta automaticamente o formato a partir da extensão do arquivo:
using IronQr;
using IronSoftware.Drawing;
QrCode qr = QrWriter.Write("Format demonstration");
AnyBitmap image = qr.Save();
// Save to raster image formats
image.SaveAs("qr-output.png");
image.SaveAs("qr-output.jpg");
image.SaveAs("qr-output.gif");
// Get as byte array for HTTP responses or database storage
byte[] pngBytes = image.ExportBytes();
using IronQr;
using IronSoftware.Drawing;
QrCode qr = QrWriter.Write("Format demonstration");
AnyBitmap image = qr.Save();
// Save to raster image formats
image.SaveAs("qr-output.png");
image.SaveAs("qr-output.jpg");
image.SaveAs("qr-output.gif");
// Get as byte array for HTTP responses or database storage
byte[] pngBytes = image.ExportBytes();
Imports IronQr
Imports IronSoftware.Drawing
Dim qr As QrCode = QrWriter.Write("Format demonstration")
Dim image As AnyBitmap = qr.Save()
' Save to raster image formats
image.SaveAs("qr-output.png")
image.SaveAs("qr-output.jpg")
image.SaveAs("qr-output.gif")
' Get as byte array for HTTP responses or database storage
Dim pngBytes As Byte() = image.ExportBytes()
Diversos Formatos de Saída de Código QR

O método ExportBytes() é particularmente útil em aplicações web onde você precisa retornar uma imagem de código QR via HTTP sem gravar no disco. Você pode escrever o array de bytes diretamente em um stream de resposta ou armazená-lo em uma coluna de banco de dados para recuperação sob demanda.
Para incorporar códigos QR em documentos PDF, IronQR fornece o método StampToExistingPdfPage, permitindo o posicionamento direto do código QR em documentos existentes. Isso funciona nativamente sem bibliotecas PDF adicionais, o que importa em ambientes de microserviços onde é desejável minimizar a contagem de dependências.
Como Comparar o Pacote IronQR NuGet com QRCoder?
A biblioteca QRCoder é uma opção popular de código-fonte aberto para geração de códigos QR em .NET. Desenvolvedores que usaram QRCoder estão familiarizados com sua API em múltiplos passos envolvendo QRCodeGenerator, QRCodeData, e uma classe de renderização separada como PngByteQRCode. IronQR simplifica isso para uma única chamada QrWriter.Write().
| Recurso | IronQR | QRCoder |
|---|---|---|
| Renderização Multiplataforma | Suporte completo for .NET 5-10 | Apenas para Windows na renderização de bitmap |
| Leitura Assistida por ML | Detecção com 99,9% de precisão | Apenas geração, sem leitura |
| Integração de PDF | Suporte nativo para marcação | Requer bibliotecas adicionais |
| Suporte comercial | Suporte técnico 24 horas por dia, 5 dias por semana | Apenas para a comunidade |
| Incorporar logotipo | Embutido, auto-posicionado | Sobreposição manual necessária |
O QRCoder funciona bem para geração básica em ambientes Windows. O modelo de aprendizado de máquina do IronQR fornece leitura superior de código QR de qualquer ângulo - fundamental para aplicativos que processam imagens enviadas por usuários onde a qualidade de entrada não pode ser controlada. A API de método único também reduz as linhas de código necessárias para implementar um recurso funcional.
Para equipes que estão migrando do QRCoder, veja o guia de migração do QRCoder para IronQR para um mapeamento de API lado a lado.
Como você codifica dados binários em um código QR?
Além de texto, o IronQR suporta codificação de arrays de bytes para cargas úteis de código QR binário. Isso é útil para tokens criptografados, objetos serializados ou identificadores binários brutos que não podem ser representados como strings UTF-8:
using IronQr;
using IronSoftware.Drawing;
// Encode binary data -- useful for encrypted payloads or binary identifiers
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Binary content example");
QrCode qr = QrWriter.Write(binaryData);
qr.Save().SaveAs("binary-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Encode binary data -- useful for encrypted payloads or binary identifiers
byte[] binaryData = System.Text.Encoding.UTF8.GetBytes("Binary content example");
QrCode qr = QrWriter.Write(binaryData);
qr.Save().SaveAs("binary-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Encode binary data -- useful for encrypted payloads or binary identifiers
Dim binaryData As Byte() = System.Text.Encoding.UTF8.GetBytes("Binary content example")
Dim qr As QrCode = QrWriter.Write(binaryData)
qr.Save().SaveAs("binary-qr.png")
Saída

A codificação binária permite incluir cargas úteis criptografadas, objetos serializados ou qualquer conteúdo binário dentro de símbolos QR. O scanner na extremidade receptora deve saber como interpretar a carga útil binária - isso é comum em sistemas de controle de acesso onde o código QR contém um token assinado em vez de uma URL legível por humanos.
Lembre-se de que dados binários produzem símbolos QR mais densos que os dados de texto equivalentes. Se o tamanho da carga útil for uma preocupação para a confiabilidade da digitalização a distância, aplique correção de erro de Nível H e teste com a menor câmera que espera que os usuários tenham.
Como você lê códigos QR em C#?
O IronQR lida com escrita e leitura. A classe QrReader aceita arquivos de imagem, bitmaps e quadros de câmera, tornando-se adequada tanto para processamento em lote quanto para cenários de escaneamento em tempo real:
using IronQr;
using IronSoftware.Drawing;
// Load an existing image containing a QR code
var inputImage = AnyBitmap.FromFile("qr-to-read.png");
// Read all QR codes in the image
QrReadResult readResult = QrReader.Read(inputImage);
foreach (QrResult result in readResult.QrCodes)
{
// Access the decoded value
Console.WriteLine($"Decoded: {result.Value}");
}
using IronQr;
using IronSoftware.Drawing;
// Load an existing image containing a QR code
var inputImage = AnyBitmap.FromFile("qr-to-read.png");
// Read all QR codes in the image
QrReadResult readResult = QrReader.Read(inputImage);
foreach (QrResult result in readResult.QrCodes)
{
// Access the decoded value
Console.WriteLine($"Decoded: {result.Value}");
}
Imports IronQr
Imports IronSoftware.Drawing
' Load an existing image containing a QR code
Dim inputImage = AnyBitmap.FromFile("qr-to-read.png")
' Read all QR codes in the image
Dim readResult As QrReadResult = QrReader.Read(inputImage)
For Each result As QrResult In readResult.QrCodes
' Access the decoded value
Console.WriteLine($"Decoded: {result.Value}")
Next
O motor de leitura com tecnologia ML processa imagens em qualquer orientação e lida com danos parciais até o limite de correção de erro. Para cenários de leitura em produção, revise o tutorial de leitura de código QR para orientação sobre como lidar com entradas de baixa qualidade, imagens com múltiplos códigos e configuração do modo de digitalização.
Como você usa o IronQR em um aplicativo ASP.NET Core?
Aplicações web frequentemente precisam gerar códigos QR sob demanda - para links de contas de usuário, códigos de login único ou solicitações de pagamento. O exemplo a seguir mostra como servir uma imagem de código QR diretamente de um ponto final da API mínima do ASP.NET Core:
using IronQr;
using IronSoftware.Drawing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Return a QR code PNG for a given URL parameter
app.MapGet("/qr", (string data) =>
{
QrCode qr = QrWriter.Write(data);
AnyBitmap image = qr.Save();
byte[] pngBytes = image.ExportBytes();
return Results.File(pngBytes, "image/png");
});
app.Run();
using IronQr;
using IronSoftware.Drawing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
// Return a QR code PNG for a given URL parameter
app.MapGet("/qr", (string data) =>
{
QrCode qr = QrWriter.Write(data);
AnyBitmap image = qr.Save();
byte[] pngBytes = image.ExportBytes();
return Results.File(pngBytes, "image/png");
});
app.Run();
Imports IronQr
Imports IronSoftware.Drawing
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
' Set license key at application startup
IronQr.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
' Return a QR code PNG for a given URL parameter
app.MapGet("/qr", Function(data As String)
Dim qr As QrCode = QrWriter.Write(data)
Dim image As AnyBitmap = qr.Save()
Dim pngBytes As Byte() = image.ExportBytes()
Return Results.File(pngBytes, "image/png")
End Function)
app.Run()
Este padrão funciona tanto em APIs mínimas do ASP.NET Core quanto em controladores MVC padrão. A chamada ExportBytes() evita gravar arquivos temporários no disco, o que é importante em implantações em contêineres onde o sistema de arquivos pode ser somente leitura ou efêmero.
Para um guia completo de integração com o ASP.NET Core, veja o tutorial do gerador de código QR para ASP.NET Core. Um guia específico para Blazor também está disponível no tutorial gerador de código QR para Blazor.
Como você adiciona uma margem e redimensiona uma imagem de código QR?
Controlar dimensões e zonas de silêncio é essencial para saída de qualidade de impressão. IronQR expõe ambos através de QrStyleOptions, e guias dedicados de como-fazer cobrem cada um em detalhe:
using IronQr;
using IronSoftware.Drawing;
// Specify dimensions and quiet zone for print output
var printOptions = new QrStyleOptions
{
Dimensions = 600, // High resolution for print
Margins = 20 // Generous quiet zone for reliable scanning
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap printImage = qr.Save(printOptions);
printImage.SaveAs("print-ready-qr.png");
using IronQr;
using IronSoftware.Drawing;
// Specify dimensions and quiet zone for print output
var printOptions = new QrStyleOptions
{
Dimensions = 600, // High resolution for print
Margins = 20 // Generous quiet zone for reliable scanning
};
QrCode qr = QrWriter.Write("https://ironsoftware.com/csharp/qr/");
AnyBitmap printImage = qr.Save(printOptions);
printImage.SaveAs("print-ready-qr.png");
Imports IronQr
Imports IronSoftware.Drawing
' Specify dimensions and quiet zone for print output
Dim printOptions As New QrStyleOptions With {
.Dimensions = 600, ' High resolution for print
.Margins = 20 ' Generous quiet zone for reliable scanning
}
Dim qr As QrCode = QrWriter.Write("https://ironsoftware.com/csharp/qr/")
Dim printImage As AnyBitmap = qr.Save(printOptions)
printImage.SaveAs("print-ready-qr.png")
Para orientação completa sobre tamanhos e requisitos de margem em diferentes mídias de saída, veja os artigos práticos sobre como redimensionar imagens de código QR e como adicionar margens aos códigos QR. O guia para criar imagem de código QR cobre todo o fluxo de criação de imagens desde a ativação da licença até a saída de arquivos.
Para casos de uso específicos de código QR - incluindo geração de códigos QR para cartões de visita, construindo um gerador de código QR dinâmico, e lendo códigos QR de imagens - os artigos dedicados cobrem cada cenário com exemplos completos de código.
Quais são os seus próximos passos?
O IronQR transforma a geração de código QR de um processo em várias etapas para uma integração simples do NuGet. Você instala o pacote, chama QrWriter.Write(), e salva o resultado -- três operações que cobrem a maioria dos cenários do mundo real. Níveis de correção de erro, estilização personalizada, marcação de PDF e leitura com tecnologia ML estão todos disponíveis através da mesma biblioteca.
A documentação do IronQR fornece a referência completa da API, incluindo tópicos avançados, como ler códigos QR com modos de digitalização, processamento em lote, e notas de implantação específicas para a plataforma. A seção de tutoriais do IronQR inclui guias passo a passo for .NET MAUI, VB.NET, e aplicações de console.
Comece um teste gratuito para explorar o conjunto completo de recursos sem restrições, ou compre uma licença para implantação em produção com suporte de engenharia 24/5.
Perguntas frequentes
Como instalar o pacote NuGet IronQR ?
Execute o dotnet add package IronQR em um terminal ou abra o Console do Gerenciador de Pacotes NuGet no Visual Studio e execute Install-Package IronQR . O pacote é compatível com .NET Framework 4.6.2+, .NET Core 2.0+ e .NET 5-10.
Como gerar um código QR em C# com IronQR?
Chame QrWriter.Write("your-data") para criar um objeto QrCode , depois chame .Save() para obter um AnyBitmap e, finalmente, chame .SaveAs("output.png") para gravar o arquivo.
Quais formatos de saída o IronQR suporta para códigos QR?
O IronQR suporta PNG, JPEG, GIF, TIFF, BMP e SVG. O método SaveAs detecta automaticamente o formato a partir da extensão do arquivo. Use ExportBytes() para obter uma matriz de bytes para respostas HTTP ou armazenamento em banco de dados.
Como personalizar a cor e o tamanho de um código QR com o IronQR?
Crie um objeto QrStyleOptions e defina Dimensions (pixels), Margins (pixels da zona silenciosa), Color e BackgroundColor . Passe isso para qr.Save(styleOptions) .
Quais são os níveis de correção de erros suportados IronQR ?
O IronQR suporta todos os quatro níveis ISO/IEC 18004 através QrErrorCorrectionLevel : L (~7% de recuperação), M (~15%, padrão), Q (~25%) e H (~30%). Passe o nível em um objeto QrOptions para QrWriter.Write() .
Como o IronQR se compara ao QRCoder for .NET?
O IronQR oferece renderização multiplataforma em .NET 5-10 (a renderização de bitmap do QRCoder é exclusiva do Windows), leitura integrada com tecnologia de aprendizado de máquina (o QRCoder apenas gera), carimbo PDF nativo e uma API de método único. O QRCoder é uma opção gratuita e de código aberto para geração simples baseada em Windows.
É possível usar o IronQR para ler códigos QR em imagens?
Sim. Use QrReader.Read(AnyBitmap.FromFile("path")) para ler uma imagem. O mecanismo com tecnologia de aprendizado de máquina lida com qualquer orientação e danos parciais. Itere sobre readResult.QrCodes para acessar cada result.Value decodificado.
Como gerar códigos QR em uma aplicação ASP.NET Core ?
Chame QrWriter.Write(data) dentro do seu controlador ou manipulador de API mínimo, depois chame image.ExportBytes() e retorne o array de bytes como uma resposta Results.File(pngBytes, "image/png") . Não são necessários arquivos temporários.


