Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Cómo Escanear Códigos de Barras en ZXing Para Desarrolladores en C#

Los códigos de barras proporcionan una forma clara y legible por máquina de presentar datos. Inicialmente, los códigos de barras consistían en líneas paralelas con anchos y espacios variables, sirviendo como representación de datos. Estos códigos de barras lineales o unidimensionales (1D) tradicionales podían ser escaneados por dispositivos ópticos especializados llamados lectores de código de barras. Sin embargo, la evolución de los códigos de barras llevó a la invención de códigos de barras bidimensionales (2D), también conocidos como códigos de matriz. A diferencia de los códigos de barras tradicionales, los códigos 2D utilizan patrones como rectángulos, puntos y hexágonos en lugar de barras. Para leer estos códigos de barras 2D, están disponibles configuraciones de escáner óptico específicas, o métodos alternativos que implican el uso de una cámara digital conectada a una computadora que ejecuta software de decodificación. Además, los dispositivos móviles como los teléfonos inteligentes pueden utilizar sus cámaras integradas y aplicaciones dedicadas para funcionar como un escáner de código de barras 2D.

Escáner de código de barras ZXing

Zebra Crossing, a menudo conocido como ZXing, es un conjunto de herramientas de procesamiento de imágenes de código de barras 1D/2D de formato múltiple de código abierto que fue desarrollado en Java y tiene ports para otros lenguajes. La biblioteca básica de decodificación de imágenes, el código cliente específico de Java y el cliente de Android Barcode Scanner son solo algunos de los módulos que componen ZXing. Numerosos proyectos independientes de código abierto se basan en él.

1. Características

  • Puede hacer un seguimiento de URLs, información de contacto, eventos de calendario y más.
  • Se creó pensando en aplicaciones de Java SE.
  • A través del propósito, es posible la integración del escáner de código de barras.
  • Es una aplicación sencilla para Google Glass.

2. Uso de ZXing con .NET

Abra Visual Studio, elija 'nuevo proyecto' del menú de archivo, luego 'aplicación de consola'. En este artículo, estamos eligiendo la aplicación de consola de C#.

¡Cómo escanear códigos de barras en ZXing para desarrolladores de C# Figura 1

Ingrese el nombre del proyecto y la ruta del archivo en el cuadro de texto correspondiente. A continuación, haga clic en el botón Crear para elegir el .NET Framework requerido.

Si seleccionó una aplicación de consola, el proyecto ahora creará su estructura y abrirá el archivo program.cs, permitiéndole ingresar el código del programa y compilarlo o ejecutarlo.

¡Cómo escanear códigos de barras en ZXing para desarrolladores de C# Figura 2

2.1 Instalar ZXing Barcode

Ingrese el siguiente comando en la Consola del Administrador de Paquetes NuGet para instalar la biblioteca ZXing:

Install-Package ZXing.Net.Bindings.Windows.Compatibility

Alternativamente, puede obtener el paquete utilizando la herramienta del administrador de paquetes NuGet. Como la ilustración a continuación. Intente instalar el primer resultado que elija.

¡Cómo escanear códigos de barras en ZXing para desarrolladores de C# Figura 3

2.2 Leer y escribir códigos de barras usando ZXing

Podemos crear un código de barras utilizando el siguiente código de muestra. ZXing nos permite crear más de 10 tipos de formatos de código 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");
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")
$vbLabelText   $csharpLabel

El código anterior establece la altura y el ancho para las QrCodeEncodingOptions. Luego crea una instancia de BarcodeWriter. Para el BarcodeWriter, establecemos el formato del código de barras como código QR. Asignamos las opciones de código QR creadas previamente al escritor. El método Write en el BarcodeWriter codifica la cadena proporcionada en un código de barras y la devuelve como una imagen de mapa de bits. La imagen se guarda usando el método Save del mapa de bits. A continuación se muestra el resultado del código.

¡Cómo escanear códigos de barras en ZXing para desarrolladores de C# Figura 4

El siguiente ejemplo de código demuestra cómo decodificar un 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();
}
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 If
$vbLabelText   $csharpLabel

En el código anterior, primero cargamos la imagen en un mapa de bits y luego creamos un objeto BarcodeReader. La función Decode nos permite pasar el mapa de bits como parámetro, lo que puede devolver resultados en múltiples formatos. Utilizamos la propiedad Text para obtener el texto codificado en el código de barras.

¡Cómo escanear códigos de barras en ZXing para desarrolladores de C# Figura 5

IronBarcode

Con la ayuda de esta biblioteca de código de barras, leer y crear códigos de barras es sencillo. Un código de barras dinámico es fácil de hacer con la biblioteca de IronBarcode. Con solo unas pocas líneas de código, esta sencilla biblioteca puede generar un código de barras, lo cual nos ayuda a codificar imágenes de código de barras. IronBarcode nos permite generar códigos de barras en lenguajes como C# y VB.NET.

1. Características

  • IronBarcode puede leer y escribir la mayoría de los formatos de imagen de código de barras y estándares QR, incluidos UPC A/E, Databar, EAN 8/13, MSI, Code 39/93/128, CodaB, RSS 14/Expanded, e ITF.
  • Al escanear escaneos y marcos de video en tiempo real, IronBarcode puede rectificar rotación, ruido, distorsión e inclinación. Para mejorar la precisión y velocidad de lectura, IronBarcode preprocesa automáticamente las imágenes de código de barras mientras se están creando. Los códigos de barras dinámicos se utilizan frecuentemente ya que permiten cambiar el contenido.
  • La capacidad de IronBarcode para utilizar muchos núcleos e hilos es ventajosa para los servidores de procesamiento por lotes.
  • En documentos de una o varias páginas, IronBarcode puede encontrar automáticamente uno o más códigos de barras.

2. Uso de IronBarcode

Para utilizar la biblioteca IronBarcode en la solución, debe descargar el paquete requerido. Para hacerlo, use el siguiente comando en la Consola del Administrador de Paquetes NuGet:

Install-Package BarCode

Como alternativa, puede utilizar el Administrador de Paquetes NuGet, que mostrará todos los resultados de búsqueda, para buscar y descargar el paquete 'Barcode'. Luego podrá seleccionar el paquete esencial para descargar en el programa a partir de ellos.

¡Cómo escanear códigos de barras en ZXing para desarrolladores de C# Figura 6

3. Leer y escribir códigos de barras con IronBarcode

Con solo unas pocas líneas de código, podemos crear rápidamente imágenes de código de barras usando la biblioteca IronBarcode. Además, nos permite guardar el código de barras creado como un archivo de imagen separado. Aquí hay un ejemplo de código en C# para crear una etiqueta de código de barras con un programa de consola.

using IronBarCode;

// Create a QR code with a medium error correction level
QRCodeWriter.CreateQrCode("Your text here", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPng("demo.png");
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")
$vbLabelText   $csharpLabel

Este código produce una imagen de 500 por 500 píxeles utilizando un nivel medio de corrección de errores, y luego la guarda en una ubicación de archivo utilizando el método SaveAsPng.

El próximo ejemplo de código lee el texto codificado en el código QR que creamos en el ejemplo 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();
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()
$vbLabelText   $csharpLabel

Primero cargamos la imagen en un mapa de bits, y luego leemos la imagen usando el método Read en la clase BarcodeReader. Usamos la propiedad Values en el objeto BarcodeResults devuelto del método Read para obtener el contenido que se leyó del código QR.

Para saber más sobre ZXing y cómo se compara con IronBarcode, lea esta siguiente publicación del blog.

Nuestro tutorial de Lectura de códigos de barras también proporciona más información sobre cómo usar IronBarcode para leer códigos de barras y códigos QR. Para más tutoriales de código sobre IronBarcode.

Conclusión

El escáner de código de barras ZXing puede crear códigos de barras de alta calidad, pero está desactualizado y admite pocos formatos de código de barras. También tiene documentación limitada y soporte de producto.

Por otro lado, IronBarcode es muy eficiente y flexible, y es capaz de trabajar en muchos sistemas operativos. IronBarcode puede cambiar el color, tamaño, espaciado y letras utilizados en los códigos de barras. También es compatible con Crystal Reports.

Los desarrolladores pueden usar IronBarcode de forma gratuita. Los usuarios pueden comprar una licencia para acceder a funciones adicionales y recibir un año completo de soporte y actualizaciones de productos.

Por favor notaZXing es una marca registrada de su respectivo propietario. Este sitio no está afiliado, endosado ni respaldado por ZXing. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son sólo para fines informativos y reflejan información disponible públicamente al momento de escribir.

Preguntas Frecuentes

¿Cómo puedo convertir HTML a PDF en C#?

Puedes usar el método RenderHtmlAsPdf de IronPDF para convertir cadenas de HTML en PDFs. También puedes convertir archivos HTML a PDFs usando RenderHtmlFileAsPdf.

¿Cuáles son las diferencias entre IronBarcode y ZXing?

IronBarcode ofrece mayor flexibilidad y admite una gama más amplia de formatos de códigos de barras en comparación con ZXing. Aunque ZXing es efectivo para crear códigos de barras, su soporte de formatos y documentación son limitados. IronBarcode sobresale en eficiencia y es compatible con varios sistemas operativos.

¿Cómo escanear un código de barras usando un dispositivo móvil?

Con el cliente Android de ZXing, Barcode Scanner, puedes usar la cámara de tu dispositivo para escanear códigos de barras. Para características más robustas, IronBarcode se puede integrar en aplicaciones móviles para mejorar las capacidades de escaneo de códigos de barras.

¿IronBarcode soporta códigos de barras 2D?

Sí, IronBarcode soporta tanto códigos de barras 1D como 2D, incluidos códigos QR, permitiendo una versátil lectura y creación de códigos de barras.

¿Puede IronBarcode gestionar la creación dinámica de códigos de barras?

IronBarcode soporta la creación dinámica de códigos de barras, permitiéndote personalizar los códigos en términos de color, tamaño, espaciado y rotulación para cumplir con requisitos específicos.

¿Qué se requiere para integrar IronBarcode en un proyecto .NET?

Para integrar IronBarcode en un proyecto .NET, instala el paquete a través de la Consola del Gestor de Paquetes NuGet usando Install-Package IronBarcode o encuéntralo en el Gestor de Paquetes NuGet.

¿Hay un costo asociado con el uso de IronBarcode?

IronBarcode ofrece una prueba gratuita, pero comprar una licencia proporciona características adicionales, actualizaciones de producto y un año de soporte.

¿Se puede utilizar IronBarcode para leer códigos de barras desde fotogramas de video?

Sí, IronBarcode puede procesar fotogramas de video en tiempo real, corrigiendo rotación, ruido, distorsión e inclinación para mejorar la precisión y velocidad en el escaneo de códigos de barras.

¿Cuáles son las características de ZXing para el escaneo de códigos de barras?

ZXing proporciona un conjunto de herramientas de código abierto para el escaneo de códigos de barras, en particular para códigos de barras 1D y 2D. Incluye una biblioteca principal de decodificación de imágenes y un cliente Android Barcode Scanner.

¿Qué lenguajes de programación son compatibles con IronBarcode?

IronBarcode soporta C# y VB.NET, lo que lo hace ideal para desarrolladores que trabajan dentro del marco de .NET.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más