Como gerar um código QR usando o QRCoder em comparação com o IronQR no .NET 6
Geração de Código QR em C
Criar códigos QR em aplicações C# é uma exigência comum para desenvolvedores, especialmente para aplicações envolvendo identificação de produtos, bilhetagem, ou compartilhamento de URLs e outros dados facilmente. Existem várias bibliotecas disponíveis para gerar códigos QR em C#. Duas opções notáveis são QRCoder e IronQR. Aqui, exploraremos ambos, comparando suas capacidades, facilidade de uso, desempenho e outros fatores relevantes para desenvolvedores trabalhando com .NET 6. Neste artigo, mergulharemos em uma comparação detalhada dessas bibliotecas, examinando seus recursos, facilidade de uso, licença, e mais, junto com exemplos de código para ilustrar seu uso.
Como Gerar Código QR usando QRCoder comparado ao IronQR no .NET 6
- Crie um novo projeto no Visual Studio para gerar um código QR
- Instale os pacotes NuGet QRCoder e IronQR para comparar
- Crie códigos QR usando QRCoder e IronQR
- Opções de Personalização com QRCoder e IronQR
QRCoder
QRCoder é uma biblioteca de código aberto escrita em C# e fornece implementação de Código QR que permite gerar Códigos QR conforme definido pelo ISO/IEC 18004 em qualquer aplicação .NET. É uma biblioteca leve e fácil de usar, sem dependências de outras bibliotecas ou pilhas de rede.
Aqui estão os recursos e benefícios principais do QRCoder:
1. Facilidade de Uso
C# QRCoder oferece uma API simples e intuitiva, tornando fácil para desenvolvedores gerar códigos QR/texto de código QR com esforço mínimo. Sua simplicidade permite que desenvolvedores de todos os níveis de habilidade integrem rapidamente a geração de código QR em seus projetos.
2. Opções Extensivas de Personalização
Um dos recursos mais destacados do QRCoder é sua capacidade de personalizar códigos QR de acordo com requisitos específicos. Os desenvolvedores podem ajustar parâmetros como nível de correção de erro, tamanho, cor e até mesmo incorporar logotipos ou imagens dentro do código QR.
3. Vários Formatos de Codificação
O QRCoder suporta vários formatos de codificação, permitindo que os desenvolvedores codifiquem diferentes tipos de dados em códigos QR. Seja texto simples, URLs, informações de contato ou credenciais de Wi-Fi, o QRCoder pode lidar com uma ampla gama de formatos de dados.
4. Saída de Alta Qualidade
Os códigos QR gerados pelo C# QRCoder são de alta qualidade, garantindo legibilidade e confiabilidade em diferentes dispositivos e condições de digitalização. Essa confiabilidade é crucial para aplicações onde os códigos QR servem como uma ponte entre interações físicas e digitais.
5. Código Aberto e Desenvolvimento Ativo
O C# QRCoder é um projeto de código aberto, permitindo que os desenvolvedores contribuam para seu desenvolvimento e garantindo melhorias e atualizações contínuas. Esse envolvimento ativo da comunidade promove a inovação e assegura que a biblioteca permaneça relevante no cenário tecnológico em constante evolução.
IronQR
IronQR é uma poderosa biblioteca C# de Código QR desenvolvida e mantida pela Iron Software. Permite que engenheiros de software C# detectem, leiam e criem códigos QR em aplicativos e sites .NET. Aqui estão alguns recursos principais do IronQR:
Geração de código QR
O IronQR permite uma geração de código QR altamente personalizável. Você pode criar códigos QR com várias opções, como redimensionamento, margens, bordas e recoloração.
using IronQr;
using IronSoftware.Drawing;
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
using IronQr;
using IronSoftware.Drawing;
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
Imports IronQr
Imports IronSoftware.Drawing
Public Class Program
Public Shared Sub Main()
' Prepare a QR Code object
Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Dim myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
End Sub
End Class
Leitura de Código QR
O IronQR usa um modelo avançado de aprendizado de máquina para detecção de códigos QR. Esse modelo garante uma leitura precisa e rápida de códigos QR. O IronQR suporta leitura de códigos QR de vários formatos de imagem, incluindo JPG, PNG, SVG, bmp e imagens multipágina como gif e tiff.
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
}
}
using IronQr;
using IronSoftware.Drawing;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
// Read QR code
var inputBmp = AnyBitmap.FromFile("awesome.png");
// Load the image into QrImageInput
QrImageInput imageInput = new QrImageInput(inputBmp);
// Create the QR Reader object
QrReader reader = new QrReader();
// Read the Input and get all embedded QR Codes
IEnumerable<QrResult> results = reader.Read(imageInput);
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Collections.Generic
Public Class Program
Public Shared Sub Main()
' Read QR code
Dim inputBmp = AnyBitmap.FromFile("awesome.png")
' Load the image into QrImageInput
Dim imageInput As New QrImageInput(inputBmp)
' Create the QR Reader object
Dim reader As New QrReader()
' Read the Input and get all embedded QR Codes
Dim results As IEnumerable(Of QrResult) = reader.Read(imageInput)
End Sub
End Class
Compatibilidade entre plataformas
- Desktop: Funciona com aplicativos de desktop do Windows (WPF & MAUI).
- Mobile: Compatível com Xamarin e MAUI.
- Web: Suporta Blazor e WebForms.
- Console: Ambientes de aplicativos e bibliotecas.
- Nuvem: Docker, Azure e AWS.
Codificação de Dados
Você pode codificar vários tipos de dados em códigos QR, incluindo texto, URLs, bytes e números.
Correção de erros
IronQR fornece mensagens de erro detalhadas e opções de correção de erro personalizadas.
Confiado por Milhões, o IronQR é confiado por engenheiros em todo o mundo por sua confiabilidade e facilidade de uso. Para começar com o IronQR, você pode instalá-lo via NuGet.
Passo 1: Crie um novo projeto do Visual Studio para Gerar um código QR
Para começar com o código, vamos criar um Projeto Visual Studio. Abra o Microsoft Visual Studio 2022 e selecione a opção "Criar um novo projeto".

Selecione o template de aplicação de Console da lista de templates

Em seguida, forneça o nome do projeto e os nomes da solução. Selecione o caminho para armazenar os arquivos do projeto

Selecione a versão do .NET desejada. Eu vou com o mais recente .NET 8 framework no momento de escrever este artigo.

Uma vez clicado o botão criar, o projeto é criado e pronto para desenvolvimento.
Passo 2: Instale os pacotes NuGet do QRCoder e IronQR
O pacote NuGet QRCoder pode ser instalado usando o gerenciador de pacotes NuGet do Visual Studio conforme mostrado abaixo.

Ou instale-o a partir do console do gerenciador de pacotes NuGet usando o seguinte comando
dotnet add package QRCoder --version 1.4.3
O pacote NuGet do QRCoder está disponível no site do NuGet aqui

O IronQR também pode ser instalado de forma semelhante usando o gerenciador de pacotes NuGet do Visual Studio, mostrado abaixo.

Também a partir do console do gerenciador de pacotes NuGet, use o seguinte comando
dotnet add package IronQR --version 2024.4.1

Passo 3: Criar códigos QR usando QRCoder e IronQR
Criar códigos QR nas duas bibliotecas requer um código simples, vamos verificar
QRCoder
O código a seguir mostra como gerar nosso primeiro código QR usando o QRCoder
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic and store it in a byte array
byte[] qrCodeImage = qrCode.GetGraphic(20);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic and store it in a byte array
byte[] qrCodeImage = qrCode.GetGraphic(20);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}
Imports QRCoder
Imports System.Drawing
Imports System.IO
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
' Initialize QRCodeGenerator
Using qrGenerator As New QRCodeGenerator()
' Create QR code data
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
' Initialize the QR code with the data
Using qrCode As New BitmapByteQRCode(qrCodeData)
' Generate the QR code's graphic and store it in a byte array
Dim qrCodeImage() As Byte = qrCode.GetGraphic(20)
' Convert the byte array to an image format and save it to disk
Using file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Using
End Sub
End Class
End Namespace
Explicação do código
- Inicialize o
QRCodeGeneratore chame o métodoCreateQrCodepara gerar os dados do código QR. - Use a classe
BitmapByteQRCodepara gerar um array de bytes a partir dos dados do código QR usando o métodoGetGraphic. - Converta o array de bytes em uma imagem usando
Image.FromStream. - Salve a imagem gerada no disco.
Saída

IronQR
O código a seguir mostra como gerar código QR usando o IronQR:
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
}
using IronQr;
using IronSoftware.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Prepare a QR Code object
QrCode theQrGen = QrWriter.Write("Awesome IronQR");
// Save QR Code to memory
AnyBitmap myQrImage = theQrGen.Save();
// Save QR Code image to disk
myQrImage.SaveAs("awesome.png");
}
}
}
Imports IronQr
Imports IronSoftware.Drawing
Namespace QrCodeWithIronQR
Public Class Program
Public Shared Sub Main()
' Prepare a QR Code object
Dim theQrGen As QrCode = QrWriter.Write("Awesome IronQR")
' Save QR Code to memory
Dim myQrImage As AnyBitmap = theQrGen.Save()
' Save QR Code image to disk
myQrImage.SaveAs("awesome.png")
End Sub
End Class
End Namespace
Como você já pode ver a diferença na quantidade de código. A geração de código com IronQR requer menos código.
Explicação do código
- Crie o código QR usando o método
QrWriter.Write, passando o conteúdo desejado. - Salve o código QR na memória usando o método
Save. - Salve a imagem do código QR no disco usando
SaveAs.
Saída
A saída possui uma marca d'água IronQR, pois estou usando uma versão de teste da biblioteca. Com uma versão licenciada, isso será removido.

Passo 4: Opções de Personalização com QRCoder e IronQR
Ambas as bibliotecas suportam opções de personalização. Vamos olhar algumas opções disponíveis
Podemos definir as cores do código QR no QRCoder como abaixo:
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic, specifying foreground and background colors
byte[] qrCodeImage = qrCode.GetGraphic(20, Color.Red, Color.Green);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}
using QRCoder;
using System.Drawing;
using System.IO;
namespace QRCoderVsIronQR
{
public class Program
{
public static void Main()
{
// Initialize QRCodeGenerator
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
// Create QR code data
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q))
// Initialize the QR code with the data
using (BitmapByteQRCode qrCode = new BitmapByteQRCode(qrCodeData))
{
// Generate the QR code's graphic, specifying foreground and background colors
byte[] qrCodeImage = qrCode.GetGraphic(20, Color.Red, Color.Green);
// Convert the byte array to an image format and save it to disk
using (var file = Image.FromStream(new MemoryStream(qrCodeImage)))
{
file.Save("QrCoderDemo1.png");
}
}
}
}
}
Imports QRCoder
Imports System.Drawing
Imports System.IO
Namespace QRCoderVsIronQR
Public Class Program
Public Shared Sub Main()
' Initialize QRCodeGenerator
Using qrGenerator As New QRCodeGenerator()
' Create QR code data
Using qrCodeData As QRCodeData = qrGenerator.CreateQrCode("QRCoder Demo 1", QRCodeGenerator.ECCLevel.Q)
' Initialize the QR code with the data
Using qrCode As New BitmapByteQRCode(qrCodeData)
' Generate the QR code's graphic, specifying foreground and background colors
Dim qrCodeImage() As Byte = qrCode.GetGraphic(20, Color.Red, Color.Green)
' Convert the byte array to an image format and save it to disk
Using file = Image.FromStream(New MemoryStream(qrCodeImage))
file.Save("QrCoderDemo1.png")
End Using
End Using
End Using
End Using
End Sub
End Class
End Namespace
Explicação do código
- Inicialize o
QRCodeGeneratore chame o métodoCreateQrCodepara gerar os dados do código QR. - Use a classe
BitmapByteQRCodepara gerar um array de bytes a partir dos dados do código QR usando o métodoGetGraphic, especificando as cores de primeiro plano (vermelho) e fundo (verde). - Converta o array de bytes em uma imagem usando
Image.FromStream. - Salve a imagem gerada no disco.
Saída

Podemos definir cores para a geração de código QR de IronQR como o código a seguir:
using IronQr;
using IronSoftware.Drawing;
using System.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Set options
QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
// Create QR
QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
// Style options
AnyBitmap logoBmp = new AnyBitmap("logo.png");
QrStyleOptions style = new QrStyleOptions
{
BackgroundColor = Color.Aqua,
Dimensions = 300, // px
Margins = 10, // px
Color = Color.Red,
Logo = new QrLogo
{
Bitmap = logoBmp,
Width = 100,
Height = 100,
CornerRadius = 2
}
};
// Save QR Code
AnyBitmap qrImage = myQr.Save(style);
// Save QR Code to local disk
qrImage.SaveAs("advancedQr.png");
}
}
}
using IronQr;
using IronSoftware.Drawing;
using System.Drawing;
namespace QrCodeWithIronQR
{
public class Program
{
public static void Main()
{
// Set options
QrOptions options = new QrOptions(QrErrorCorrectionLevel.Medium, 20);
// Create QR
QrCode myQr = QrWriter.Write("IronQR Generation Demo 1", options);
// Style options
AnyBitmap logoBmp = new AnyBitmap("logo.png");
QrStyleOptions style = new QrStyleOptions
{
BackgroundColor = Color.Aqua,
Dimensions = 300, // px
Margins = 10, // px
Color = Color.Red,
Logo = new QrLogo
{
Bitmap = logoBmp,
Width = 100,
Height = 100,
CornerRadius = 2
}
};
// Save QR Code
AnyBitmap qrImage = myQr.Save(style);
// Save QR Code to local disk
qrImage.SaveAs("advancedQr.png");
}
}
}
Imports IronQr
Imports IronSoftware.Drawing
Imports System.Drawing
Namespace QrCodeWithIronQR
Public Class Program
Public Shared Sub Main()
' Set options
Dim options As New QrOptions(QrErrorCorrectionLevel.Medium, 20)
' Create QR
Dim myQr As QrCode = QrWriter.Write("IronQR Generation Demo 1", options)
' Style options
Dim logoBmp As New AnyBitmap("logo.png")
Dim style As New QrStyleOptions With {
.BackgroundColor = Color.Aqua,
.Dimensions = 300,
.Margins = 10,
.Color = Color.Red,
.Logo = New QrLogo With {
.Bitmap = logoBmp,
.Width = 100,
.Height = 100,
.CornerRadius = 2
}
}
' Save QR Code
Dim qrImage As AnyBitmap = myQr.Save(style)
' Save QR Code to local disk
qrImage.SaveAs("advancedQr.png")
End Sub
End Class
End Namespace
Com o IronQR, há muitas opções de personalização. No programa acima, tentamos personalizar a cor de fundo, a cor do código QR, as margens. Também podemos definir as dimensões.
Explicação do código
- Primeiro, crie o objeto
QrOptionspara definir o nível de correção de erro. - Prepare o código QR com o método
QrWriter.Write. - Configure as opções de estilo com
QrStyleOptions. - Defina a cor de fundo, cor de primeiro plano, margens, dimensões e até um logotipo para o código QR.
- Salve a imagem do código QR no disco local.
Saída

Licenciamento
QRCoder é um pacote baseado em licença MIT e é desenvolvido com a ajuda da comunidade. Este pacote é bom para projetos com orçamento reduzido. O usuário precisa esperar que a comunidade resolva os problemas ou pode corrigir e enviar o código para o Repositório Git com solicitações de pull aprovadas.
IronQR requer uma licença. Tem o suporte da Iron Software.
Uma licença de teste do IronQR pode ser obtida. A chave obtida precisa ser colocada no arquivo appSettings.json aqui:
{
"IronQr.License.LicenseKey": "myKey"
}
Conclusão
Escolher entre C# QRCoder e IronQR depende, em última análise, dos requisitos específicos do seu projeto. Se você precisa de uma biblioteca de geração de código QR gratuita e de código aberto com muitas opções de personalização, então o QRCoder C# pode ser a escolha preferida devido à sua simplicidade e extensas opções de personalização.
Se você precisa de uma biblioteca em nível empresarial que suporte não apenas a geração de códigos QR com opções de personalização, mas também suporte a leitura de códigos QR, então IronQR seria a escolha definitiva. Com a biblioteca IronQR, seus muitos benefícios e suporte funcionalidade da Iron Software, os desenvolvedores podem escrever aplicativos empresariais com facilidade e tranquilidade.
Perguntas frequentes
Como posso gerar códigos QR em C#?
Você pode gerar códigos QR em C# usando bibliotecas como QRCoder e IronQR. O QRCoder é de código aberto e oferece ampla personalização, enquanto o IronQR fornece recursos avançados e suporte multiplataforma, ideal para aplicações de nível empresarial.
Quais são os benefícios de usar o QRCoder em projetos .NET 6?
O QRCoder é vantajoso para projetos .NET 6 devido à sua facilidade de uso, amplas opções de personalização e suporte a múltiplos formatos de codificação. Além disso, é gratuito sob a licença MIT, o que o torna adequado para projetos com orçamento limitado.
Como posso personalizar códigos QR usando o IronQR?
O IronQR permite que os desenvolvedores personalizem códigos QR ajustando parâmetros como cor de fundo, cor do código QR, margens, dimensões e até mesmo adicionando logotipos para melhorar a aparência do código QR.
Qual a vantagem do IronQR para aplicações multiplataforma?
O IronQR oferece suporte a aplicativos multiplataforma, incluindo desktop (WPF e MAUI), dispositivos móveis (Xamarin e MAUI), web (Blazor e WebForms), aplicativos de console e ambientes de nuvem como Docker, Azure e AWS, tornando-o ideal para diversas necessidades de desenvolvimento.
Quais são os passos necessários para configurar um projeto de geração de código QR no Visual Studio?
Para configurar um projeto de geração de código QR no Visual Studio, você precisa instalar os pacotes NuGet necessários para o QRCoder ou o IronQR, dependendo da sua escolha. Este artigo fornece instruções passo a passo e exemplos de código para guiá-lo durante o processo.
Como o IronQR aprimora a correção de erros em códigos QR?
O IronQR aprimora a correção de erros em códigos QR, oferecendo opções detalhadas para garantir uma leitura precisa mesmo que o código esteja danificado ou parcialmente oculto. Isso o torna altamente confiável para aplicações críticas.
Quais opções de licenciamento estão disponíveis para o IronQR?
O IronQR requer uma licença comercial, com suporte da Iron Software, e a opção de obter uma licença de avaliação para fins de teste. Isso garante que projetos de nível empresarial tenham acesso a suporte e recursos robustos.
Qual biblioteca devo escolher para um projeto simples de código QR?
Para projetos simples de código QR, o QRCoder é recomendado devido à sua simplicidade, facilidade de uso e custo-benefício, sendo uma biblioteca de código aberto sob a licença MIT.
O IronQR consegue ler códigos QR de vários formatos de imagem?
Sim, o IronQR consegue ler códigos QR de vários formatos de imagem, utilizando um modelo avançado de aprendizado de máquina para garantir uma leitura rápida e precisa em diferentes plataformas.



