Comparação entre o decodificador ZXing e o IronBarcode
Códigos de barras fornecem uma forma clara e legível por máquinas de apresentar dados. Inicialmente, os códigos de barras consistiam em linhas paralelas com larguras e espaçamentos variados, servindo como uma representação de dados. Esses códigos de barras tradicionais lineares ou unidimensionais (1D) poderiam ser escaneados por dispositivos ópticos especializados chamados leitores de códigos de barras. No entanto, a evolução dos códigos de barras levou à invenção dos códigos de barras bidimensionais (2D), também conhecidos como códigos de matriz. Ao contrário dos códigos de barras tradicionais, os códigos de barras 2D utilizam padrões como retângulos, pontos e hexágonos em vez de barras. Para ler esses códigos de barras 2D, configurações específicas de scanners ópticos estão disponíveis, ou métodos alternativos envolvem o uso de uma câmera digital conectada a um computador rodando software de decodificação. Além disso, dispositivos móveis como smartphones podem aproveitar suas câmeras integradas e aplicativos dedicados para funcionar como um scanner de códigos de barras 2D.
Leitor de código de barras ZXing
Zebra Crossing, frequentemente conhecido como ZXing, é um toolkit open-source de processamento de imagens de códigos de barras 1D/2D, desenvolvido em Java e que possui ports para outras linguagens. A biblioteca central de decodificação de imagens, o código cliente específico para Java e o aplicativo Android Barcode Scanner são apenas alguns dos módulos que compõem o ZXing. Numerosos outros projetos open-source independentes são construídos sobre ele.
1. Funcionalidades
- Ele pode rastrear URLs, informações de contato, eventos de calendário e muito mais.
- Foi criado com aplicações Java SE em mente.
- Através do propósito, a integração do scanner de códigos de barras é possível.
- É um aplicativo simples para Google Glass.
2. Usando ZXing com .NET
Abra o Visual Studio, escolha 'novo projeto' no menu arquivo, depois 'aplicativo de console'. Neste artigo, estamos escolhendo o aplicativo de console C#.

Digite o nome do projeto e o caminho do arquivo na caixa de texto apropriada. Em seguida, clique no botão Criar para escolher o .NET Framework necessário.
Se você selecionou um aplicativo de console, o projeto agora criará sua estrutura e abrirá o arquivo program.cs, permitindo que você digite o código do programa e o construa ou execute.

2.1 Instalar ZXing Barcode
Digite o seguinte comando no Console do Gerenciador de Pacotes NuGet para instalar a biblioteca ZXing:
Alternativamente, você pode obter o pacote usando a ferramenta de gerenciador de pacotes NuGet. Como a ilustração abaixo. Tente instalar o primeiro resultado que você escolher.

2.2 Ler e Escrever Código de Barras usando ZXing
Podemos criar um código de barras usando o seguinte código de exemplo. ZXing nos permite criar mais de 10 tipos de formatos de códigos de barras.
using ZXing.Windows.Compatibility;
var options = new QrCodeEncodingOptions
{
Width = 250,
Height = 250,
};
var writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
writer.Options = options;
// Encode the string into a QR code bitmap image
System.Drawing.Bitmap _bitmap = writer.Write("Hello world");
// Save the bitmap as a PNG file
_bitmap.Save("Demo1.png");Imports ZXing.Windows.Compatibility
Private options = New QrCodeEncodingOptions With {
.Width = 250,
.Height = 250
}
Private writer = New BarcodeWriter()
writer.Format = BarcodeFormat.QR_CODE
writer.Options = options
' Encode the string into a QR code bitmap image
Dim _bitmap As System.Drawing.Bitmap = writer.Write("Hello world")
' Save the bitmap as a PNG file
_bitmap.Save("Demo1.png")O código acima define a altura e a largura para o QrCodeEncodingOptions. Em seguida, cria uma instância de BarcodeWriter. Para o BarcodeWriter, definimos o formato do código de barras como QR code. Atribuímos as opções de QR code criadas anteriormente ao escritor. O método Write no BarcodeWriter codifica a string fornecida em um código de barras e a retorna como uma imagem bitmap. A imagem é salva usando o método Save do bitmap. Abaixo está o resultado do código.

O próximo exemplo de código demonstra como decodificar um código de barras usando ZXing.
using ZXing.Windows.Compatibility;
// Load the barcode image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
// Create a BarcodeReader object
var reader = new BarcodeReader();
// Decode the bitmap into a result
var result = reader.Decode(barcodeBitmap);
if (result != null)
{
// Output the decoded text to the console
Console.WriteLine(result.Text);
Console.ReadKey();
}Imports ZXing.Windows.Compatibility
' Load the barcode image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)
' Create a BarcodeReader object
Private reader = New BarcodeReader()
' Decode the bitmap into a result
Private result = reader.Decode(barcodeBitmap)
If result IsNot Nothing Then
' Output the decoded text to the console
Console.WriteLine(result.Text)
Console.ReadKey()
End IfNo código acima, primeiro carregamos a imagem em um bitmap e depois criamos um objeto BarcodeReader. A função Decode nos permite passar o bitmap como um parâmetro, que pode retornar resultados em múltiplos formatos. Usamos a propriedade Text para obter o texto codificado no código de barras.

IronBarcode
Com a ajuda desta biblioteca de códigos de barras, ler e criar códigos de barras é fácil. Um código de barras dinâmico é fácil de fazer com a Biblioteca do IronBarcode. Com apenas algumas linhas de código, esta biblioteca simples pode gerar um código de barras, o que nos ajuda a codificar imagens de códigos de barras. O IronBarcode nos permite gerar códigos de barras em linguagens como C# e VB.NET.
1. Funcionalidades
- IronBarcode pode ler e escrever a maioria dos formatos de imagem de código de barras e padrões QR, incluindo UPC A/E, Databar, EAN 8/13, MSI, Código 39/93/128, CodaB, RSS 14/Expansível, e ITF.
- Ao escanear digitalizações e quadros de vídeo em tempo real, o IronBarcode pode corrigir rotação, ruído, distorção e inclinação. Para melhorar a precisão e velocidade de leitura, o IronBarcode pré-processa automaticamente as imagens de código de barras à medida que são criadas. Os códigos de barras dinâmicos são frequentemente usados pois permitem a alteração de conteúdo.
- A capacidade do IronBarcode de utilizar muitos núcleos e threads é vantajosa para servidores de processamento em lote.
- Em documentos de uma ou várias páginas, o IronBarcode pode encontrar automaticamente um ou mais códigos de barras.
2. Usando o IronBarcode
Para utilizar a biblioteca IronBarcode na solução, você deve baixar o pacote necessário. Para fazer isso, use o seguinte comando no Console do Gerenciador de Pacotes NuGet:
Como alternativa, você pode usar o Gerenciador de Pacotes NuGet, que mostrará todos os resultados da pesquisa, para procurar e baixar o pacote "Barcode". Depois, você pode selecionar o pacote essencial para baixar no programa a partir deles.

3. Ler e Escrever Códigos de Barras usando o IronBarcode
Com apenas algumas linhas de código, podemos rapidamente fazer imagens de código de barras usando a biblioteca IronBarcode. Além disso, ele nos permite salvar o código de barras criado como um arquivo de imagem separado. Aqui está um exemplo de código C# para criar um rótulo de código de barras com um programa Console.
using IronBarCode;
// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");Imports IronBarCode
' Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png")Este código produz um gráfico de 500 por 500 pixels usando um nível médio de correção de erros, e depois o salva em uma localização de arquivo usando o método SaveAsPng.
O próximo exemplo de código lê o texto codificado no código QR que criamos no exemplo anterior.
using IronBarCode;
// Load the QR code image into a bitmap
var barcodeBitmap = (System.Drawing.Bitmap)System.Drawing.Bitmap.FromFile("demo.png");
// Read the barcode image
var reader = IronBarCode.BarcodeReader.Read(barcodeBitmap);
// Output the decoded value to the console
Console.WriteLine(reader.Values[0]);
Console.ReadKey();Imports IronBarCode
' Load the QR code image into a bitmap
Private barcodeBitmap = CType(System.Drawing.Bitmap.FromFile("demo.png"), System.Drawing.Bitmap)
' Read the barcode image
Private reader = IronBarCode.BarcodeReader.Read(barcodeBitmap)
' Output the decoded value to the console
Console.WriteLine(reader.Values(0))
Console.ReadKey()Primeiro carregamos a imagem em um bitmap e depois lemos a imagem usando o método Read na classe BarcodeReader. Usamos a propriedade Values no objeto BarcodeResults retornado do método Read para obter o conteúdo que foi lido do código QR.
Para saber mais sobre ZXing e como ele se compara ao IronBarcode, leia este próximo post no blog.
Nosso tutorial de Leitura de Códigos de Barras também fornece mais informações sobre como usar o IronBarcode para ler códigos de barras e códigos QR. Para mais tutoriais de código sobre o IronBarcode.
Conclusão
O scanner de código de barras ZXing pode criar códigos de barras de alta qualidade, mas está desatualizado e suporta poucos formatos de código de barras. Ele também tem documentação e suporte ao produto limitados.
Por outro lado, o IronBarcode é muito eficiente e flexível, e é capaz de trabalhar em muitos sistemas operacionais. O IronBarcode pode mudar a cor, tamanho, espaçamento e letras usadas em códigos de barras. Ele também suporta o Crystal Reports.
Os desenvolvedores podem usar o IronBarcode gratuitamente. Os usuários podem comprar uma licença para acessar funcionalidades adicionais e receber um ano completo de suporte e atualizações de produto.

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.