csharp-zxing

Cómo crear códigos QR y de barras en C# con ZXing.Net

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 product1D industrial2D
UPC-ACode 39QR Code
UPC-ECode 93Data Matrix
EAN-8Code 128Aztec
EAN-13CodabarPDF 417
UPC/EAN Extension 2/5ITFMaxiCode
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.