USO DE IRONBARCODE

Cómo utilizar escáneres de códigos de barras en C# Windows Apps

Jordi Bardia
Jordi Bardia
4 de mayo, 2022
Actualizado 20 de enero, 2024
Compartir:

Este tutorial demostrará cómo escanear códigos QR y códigos de barras en Aplicaciones de Consola C# y Aplicaciones .NET Windows Forms, utilizando la librería IronBarcode como ejemplo.

Utilizando la biblioteca IronBarcode, se pueden escanear y leer simultáneamente varios códigos de barras, y también puede escanear con éxito imágenes imperfectas. Aclaremos primero qué es un lector de códigos de barras.

¿Qué es un escáner de códigos de barras?

Un código de barras es una imagen cuadrada o rectangular que consiste en una serie de líneas negras paralelas y espacios blancos de anchos variables. Un escáner de códigos de barras o lector de códigos de barras es un dispositivo que puede leer códigos de barras impresos, descodificar los datos contenidos en el código de barras y enviarlos a un ordenador.

Los siguientes pasos le mostrarán cómo crear un escáner de código de barras con la ayuda de la librería IronBarcode.

Cómo leer códigos de barras en C#

  • Crear un proyecto de aplicación .NET Windows Forms en Microsoft Visual Studio
  • Instalar la biblioteca de códigos de barras
  • Lee cualquier código de barras o QR
  • Lea varios códigos de barras o códigos QR de una sola vez
  • Permitir que IronBarcode lea a partir de escaneados y fotos imperfectos

1. Crear una aplicación Windows Forms en Microsoft Visual Studio

Abra Visual Studio > Haga clic en Crear nuevo proyecto > Seleccione Plantilla de aplicación de formularios de Windows > Presione Siguiente > Nombre el proyecto > Presione Siguiente > Seleccione su .NET Framework objetivo > Haga clic en el botón Crear.

Después de crear el proyecto, diseñe el formulario de la siguiente manera desde la caja de herramientas de Visual Studio: Controles PictureBox, Label, TextBox y Button.

Cómo usar escáneres de código de barras en aplicaciones de Windows con C#, Figura 1: Escáner de código de barras

Escáner de código de barras

2. Instale la biblioteca .NET de códigos de barras en C#

La Biblioteca de códigos de barras puede instalarse utilizando uno de los tres métodos siguientes:

1. Consola del gestor de paquetes

Escriba el siguiente comando en la consola del gestor de paquetes. Descargará e instalará el paquete por ti.

Install-Package BarCode

2. Solución NuGet Packages Manager

También puede instalar la biblioteca de códigos de barras mediante la solución de paquetes NuGet. Sólo tienes que seguir estos pasos:

Haga clic en Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución.

Esto abrirá NuGet Package Manager para usted. Haga clic en Examinar y busque Código de barras; a continuación, instale la biblioteca de clases.

3. Descargar desde el enlace

Como alternativa, el IronBarCode.Dll se puede descargar y añadir a su proyecto como referencia.

Tras la descarga, añada las siguientes referencias a su proyecto de lector de códigos de barras.

using IronBarCode;
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

3. Leer cualquier código de barras o código QR

Leer un código de barras o un código QR en .NET es increíblemente fácil usando la biblioteca IronBarcode con .NET Barcode Reader.

Escáner de códigos de barras

Busque en su proyecto la imagen que desea leer. Lo abrirá en PictureBox; ahora haga clic en "escanear código". El texto aparecerá en el cuadro de texto.

Este es el código del botón "Examinar" para abrir una imagen:

// open file dialog   
OpenFileDialog open = new OpenFileDialog();  
// image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)
*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // display image in picture box
    pictureBox1.Image = new Bitmap(open.FileName); 
    // store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
// open file dialog   
OpenFileDialog open = new OpenFileDialog();  
// image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)
*.jpg;*.png;*.jpeg;*.gif;*.bmp";
if (open.ShowDialog() == DialogResult.OK) {  
    // display image in picture box
    pictureBox1.Image = new Bitmap(open.FileName); 
    // store image file path in class data member. Initialize it as string ImageFileName;
    ImageFileName = open.FileName; 
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

El código del botón "escanear código":

BarcodeResult Result = BarcodeReader.Read(ImageFileName);
textBox1.Text = Result.Text;
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
textBox1.Text = Result.Text;
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName)
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

El lector de códigos de barras muestra los datos del código de barras en el cuadro de texto de la siguiente manera:

Cómo usar escáneres de códigos de barras en aplicaciones de Windows C#, Figura 2: Imagen de código de barras para escanear con C#

Imagen de código de barras para escanear con C#

Escáner de códigos QR

En esta sección, la librería IronBarcode maneja eficazmente situaciones del mundo real que implican códigos QR sesgados. Aunque el código QR en ángulo sesgado puede ser manejado y leído por el método Read, sin embargo, puede tardar más tiempo en resolverse. La biblioteca IronBarcode proporciona una forma personalizada de usar BarcodeReaderOptions como un parámetro adicional para manejar dicha entrada de imagen. El código es el siguiente:

// Choose which filters are to be applied (in order);
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Set chosen filters in BarcodeReaderOptions:
    ImageFilters = filtersToApply,

    ExpectBarcodeTypes = BarcodeEncoding.QRCode 
 BarcodeEncoding.Code128,
};
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
// Choose which filters are to be applied (in order);
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    // Set chosen filters in BarcodeReaderOptions:
    ImageFilters = filtersToApply,

    ExpectBarcodeTypes = BarcodeEncoding.QRCode 
 BarcodeEncoding.Code128,
};
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La salida será la siguiente después de abrir la imagen del código QR sesgado:

Cómo usar escáneres de código de barras en una aplicación de Windows con C#, Figura 4: Imagen de código QR inclinado

Imagen de código QR inclinado

Lectura de varios códigos de barras en un solo escaneado

Documentos PDF

Las imágenes de códigos de barras pueden escanearse desde un archivo PDF y cada resultado puede mostrarse adecuadamente según se desee. El siguiente código de ejemplo permite leer varios códigos de barras de un archivo PDF.

// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also used as the input 
imagePagedBarcodeResult [] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");
// Work with the results
foreach (var PageResult in PDFResults) { 
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte [] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value + " on page " + PageNum);
}
// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also used as the input 
imagePagedBarcodeResult [] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");
// Work with the results
foreach (var PageResult in PDFResults) { 
    string Value = PageResult.Value;
    int PageNum = PageResult.PageNumber;
    System.Drawing.Bitmap Img = PageResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PageResult.BarcodeType;
    byte [] Binary = PageResult.BinaryValue;
    Console.WriteLine(PageResult.Value + " on page " + PageNum);
}
' Multiple barcodes may be scanned up from a single document or image.  A PDF document may also used as the input 
Dim PDFResults() As imagePagedBarcodeResult = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")
' Work with the results
For Each PageResult In PDFResults
	Dim Value As String = PageResult.Value
	Dim PageNum As Integer = PageResult.PageNumber
	Dim Img As System.Drawing.Bitmap = PageResult.BarcodeImage
	Dim BarcodeType As BarcodeEncoding = PageResult.BarcodeType
	Dim Binary() As Byte = PageResult.BinaryValue
	Console.WriteLine(PageResult.Value & " on page " & PageNum)
Next PageResult
$vbLabelText   $csharpLabel

Código de barras y código QR presentes en archivos PDF:

Cómo usar escáneres de códigos de barras en una aplicación de Windows en C#, Figura 3: C# - Resultados de lectura de códigos de barras desde un PDF

C# - Resultados de la lectura de códigos de barras desde un PDF

Lectura de códigos de barras a partir de imágenes imperfectas

En casos de uso en el mundo real, los códigos de barras se encuentran a menudo con imperfecciones en imágenes, escaneados, miniaturas o fotografías, y pueden contener ruido digital o estar sesgados. Esta sección muestra cómo leer datos de códigos de barras a partir de miniaturas.

Miniaturas

La biblioteca IronBarcode utiliza el Generador de Códigos de Barras C#, que incluso es capaz de leer una miniatura dañada de un código de barras.

Cómo usar escáneres de código de barras en la aplicación de Windows C#, Figura 5: Corrección automática del tamaño de la miniatura del código de barras. Archivo legible usando IronBarcode en C#

Corrección automática del tamaño de miniatura del código de barras. Archivo legible utilizando IronBarcode en C#**

Detecta automáticamente las imágenes de códigos de barras que son demasiado pequeñas para representar razonablemente un código de barras real y, a continuación, las amplía y limpia de todo el ruido digital asociado a las miniaturas, lo que permite que vuelvan a ser legibles.

// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.Read("ThumbnailOfBarcode.gif");
' Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
Dim SmallResult As BarcodeResult = BarcodeReader.Read("ThumbnailOfBarcode.gif")
$vbLabelText   $csharpLabel

Resumen

IronBarcode es una biblioteca de software .NET versátil y un Generador de Códigos QR en C# para escanear y leer una amplia variedad de formatos de imagen de códigos de barras, y puede hacerlo independientemente de si estos códigos de barras son capturas de pantalla perfectas o son de hecho fotografías, escaneos u otras imágenes del mundo real imperfectas. Además, IronBarcode ofrece una amplia gama de opciones de personalización para mejorar la velocidad de lectura de códigos de barras, como regiones de recorte o multihilo, y la precisión del modelo de ML. Visita la página oficial de documentos para obtener más información sobre IronBarcode.

Actualmente, si compras la suite completa de Iron Suite, puedes obtener cinco bibliotecas por el precio de solo dos.

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 en las pruebas de productos, el desarrollo de productos y la investigación, Jordi añade un inmenso valor a la mejora continua de los productos. La variada experiencia le mantiene desafiado y comprometido, y dice que es uno de sus aspectos favoritos de trabajar con Iron Software. Jordi creció en Miami, Florida, y estudió Informática y Estadística en la Universidad de Florida.
< ANTERIOR
Generador de código de barras .NET Tutorial
SIGUIENTE >
Cómo generar códigos de barras en ASP.NET usando C#