Ir para o conteúdo do rodapé
USANDO O IRONQR

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

  1. Crie um novo projeto no Visual Studio para gerar um código QR
  2. Instale os pacotes NuGet QRCoder e IronQR para comparar
  3. Crie códigos QR usando QRCoder e IronQR
  4. 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");
    }
}
$vbLabelText   $csharpLabel

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);
    }
}
$vbLabelText   $csharpLabel

Compatibilidade entre plataformas

  1. Desktop: Funciona com aplicativos de desktop do Windows (WPF & MAUI).
  2. Mobile: Compatível com Xamarin e MAUI.
  3. Web: Suporta Blazor e WebForms.
  4. Console: Ambientes de aplicativos e bibliotecas.
  5. 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".

How to Generate QR code using QRCoder compare to IronQR in .NET 6: Figure 1 - Open Visual Studio and click on Create a new project option

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

How to Generate QR code using QRCoder compare to IronQR in .NET 6: Figure 2 - Select the project type as Console App.

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

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 3 - Configure seu projeto especificando o nome do projeto, localização e nome da solução, depois clique em Avançar.

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

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 4 - Selecione a última versão do .NET Framework e clique no botão Criar.

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.

How to Generate QR code using QRCoder compare to IronQR in .NET 6: Figure 5 - Install QRCoder using the Manage NuGet Package for Solution by searching QRCoder in the search bar of NuGet Package Manager, then select the project and click on the Install button.

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

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 6 - Pacote NuGet QRCoder

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

How to Generate QR code using QRCoder compare to IronQR in .NET 6: Figure 7 - Install IronQR using the Manage NuGet Package for Solution by searching IronQR in the search bar of NuGet Package Manager, then select the project and click on the Install button.

Também a partir do console do gerenciador de pacotes NuGet, use o seguinte comando

dotnet add package IronQR --version 2024.4.1

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 8 - Pacote NuGet IronQR

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");
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

Explicação do código

  1. Inicialize o QRCodeGenerator e chame o método CreateQrCode para gerar os dados do código QR.
  2. Use a classe BitmapByteQRCode para gerar um array de bytes a partir dos dados do código QR usando o método GetGraphic.
  3. Converta o array de bytes em uma imagem usando Image.FromStream.
  4. Salve a imagem gerada no disco.

Saída

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 9 - Saída: imagem do código QR gerada usando a biblioteca QRCoder.

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");
        }
    }
}
$vbLabelText   $csharpLabel

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

  1. Crie o código QR usando o método QrWriter.Write, passando o conteúdo desejado.
  2. Salve o código QR na memória usando o método Save.
  3. 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.

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 10 - Saída: imagem do código QR gerada usando IronQR

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");
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

Explicação do código

  1. Inicialize o QRCodeGenerator e chame o método CreateQrCode para gerar os dados do código QR.
  2. Use a classe BitmapByteQRCode para gerar um array de bytes a partir dos dados do código QR usando o método GetGraphic, especificando as cores de primeiro plano (vermelho) e fundo (verde).
  3. Converta o array de bytes em uma imagem usando Image.FromStream.
  4. Salve a imagem gerada no disco.

Saída

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 11 - Saída: imagem do código QR colorido gerada usando os recursos de personalização do QRCoder.

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");
        }
    }
}
$vbLabelText   $csharpLabel

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

  1. Primeiro, crie o objeto QrOptions para definir o nível de correção de erro.
  2. Prepare o código QR com o método QrWriter.Write.
  3. Configure as opções de estilo com QrStyleOptions.
  4. Defina a cor de fundo, cor de primeiro plano, margens, dimensões e até um logotipo para o código QR.
  5. Salve a imagem do código QR no disco local.

Saída

Como Gerar código QR usando QRCoder comparado ao IronQR em .NET 6: Figura 12 - Saída: imagem do código QR colorido gerada usando IronQR e seus recursos de personalização.

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.

Jordi Bardia
Engenheiro de Software
Jordi é extremamente proficiente em Python, C# e C++, e quando não está utilizando suas habilidades na Iron Software, dedica-se à programação de jogos. Compartilhando as responsabilidades por testes, desenvolvimento e pesquisa de produtos, Jordi agrega imenso valor à melhoria contínua dos produtos. Essa experiência diversificada o mantém ...
Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me