ZXing.Net es una biblioteca de C# de código abierto que permite la decodificación y generación de códigos de barras o QR en aplicaciones .NET.
Se trata de una implementación de la popular biblioteca ZXing (“zebra crossing”) desarrollada en Java, que ha sido portada a C# para su uso en aplicaciones .NET.
ZXing.Net es capaz de decodificar diferentes tipos de códigos de barras. Algunos de los formatos de código de barras que admite son:
1D product | 1D industrial | 2D |
---|---|---|
UPC-A | Code 39 | QR Code |
UPC-E | Code 93 | Data Matrix |
EAN-8 | Code 128 | Aztec |
EAN-13 | Codabar | PDF 417 |
UPC/EAN Extension 2/5 | ITF | MaxiCode |
RSS-14 | ||
RSS-Expanded |
Es multiplataforma, siendo compatible con .NET Framework, .NET Standard, .NET Core, Unity. Lo que significa que podemos usarlo tanto en Windows, Android e iOS.
Además dispone de ‘bindings”, para emplearse en combinación con otras bibliotecas, como System.Drawings, ImageSharp, OpenCVSharp, SkiaSharp, EmguVB, entre otras.
Cómo usar ZXing.Net
Podemos añadir la biblioteca a un proyecto de .NET fácilmente, a través del paquete Nuget correspondiente.
Install-Package ZXing.Net
En el caso de estar usando .NET Standard o .NET 5.0 o posterior, también debemos añadir el paquete correspondiente a nuestra arquitectura, por ejemplo
Install-Package ZXing.Net.Bindings.Windows.Compatibility
Decodificar un código
A continuación, se muestra un ejemplo de uso de ZXing.Net para la decodificación de un código QR en una imagen:
using ZXing;
// Carga de la imagen que contiene el código QR
var bitmap = new Bitmap("path_a_tu_imagen.png");
// Decodificación del código de barras
var reader = new BarcodeReader();
var result = reader.Decode(bitmap);
// Impresión del resultado
if (result != null)
{
Console.WriteLine("Contenido del código QR: " + result.Text);
}
else
{
Console.WriteLine("No se pudo decodificar el código QR");
}
En este ejemplo, se carga una imagen que contiene un código QR y se crea un objeto lector de códigos de barras. Luego, se procede a decodificar el código de barras y se imprime el resultado obtenido.
Codificar un código de barras
Para generar, por ejemplo, un código QR con Zxing.Net, podemos usar el siguiente código para generar un código de barras:
using ZXing;
var barcodeWriter = new BarcodeWriter();
barcodeWriter.Format = BarcodeFormat.QR_CODE;
barcodeWriter.Options.Width = 200;
barcodeWriter.Options.Height = 200;
var barcodeBitmap = barcodeWriter.Write("Este es un código de barras de prueba.");
barcodeBitmap.Save("path_a_tu_fichero.png", ImageFormat.Png);
Donde podemos configurar el tipo de código que va a generar (código QR, código de barras, etc), ancho, alto, color del fondo… entre otras muchas opciones.
Como vemos es muy sencillo, leer o escribir códigos de barras en .NET con ZXing.Net. Además, en la página del proyecto se incluyen ejemplos en WindowsForms, WPF, ASP.NET, entre otros.
ZXing.Net es OpenSource, y todo el código y documentación está disponible en el repositorio del proyecto en https://github.com/micjahn/ZXing.Net