Saltar al pie de página
USO DE IRONBARCODE
Cómo leer el escáner de código de barras en aplicaciones de Windows en C#

Uso de escáneres de códigos de barras en aplicaciones C#

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

Usando la biblioteca IronBarcode, se pueden escanear y leer múltiples códigos de barras simultáneamente, y también se pueden escanear imágenes imperfectas con éxito. Primero aclaremos qué es un lector de códigos de barras.

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

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

Los siguientes pasos presentarán cómo crear un escáner de códigos de barras con la ayuda de la Biblioteca IronBarcode.

Cómo leer códigos de barras en C

  • Crear un proyecto de Aplicación Windows Forms .NET en Microsoft Visual Studio
  • Instalar la biblioteca de códigos de barras
  • Leer cualquier código de barras o QR
  • Leer múltiples códigos de barras o códigos QR en un solo escaneo
  • Permitir que IronBarcode lea escaneos imperfectos y fotos

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

Abra Visual Studio > Haga clic en Crear Nuevo Proyecto > Seleccione Plantilla de Aplicación Windows Forms > Presione Siguiente > Nombre el Proyecto > Presione Siguiente > Seleccione su marco .NET de destino > 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ódigos de barras en la aplicación C# Windows, Figura 1: Escáner de Códigos de Barras Escáner de Códigos de Barras

2. Instalar la biblioteca Barcode .NET en C

La Biblioteca de Código de Barras se puede instalar utilizando uno de los siguientes tres métodos:

1. Consola del administrador de paquetes

Escribe el siguiente comando en la Consola del Administrador de Paquetes. Descargará e instalará el paquete por ti.

Install-Package BarCode

2. Solución de administrador de paquetes NuGet

También puede instalar la Biblioteca de Código de Barras usando la Solución del Paquete NuGet. Simplemente sigue estos pasos:

Haz clic en Herramientas > Administrador de Paquetes NuGet > Administrar Paquetes NuGet para la Solución.

Esto abrirá el Administrador de Paquetes NuGet para ti. Haga clic en Navegar y busque Código de Barras, luego instale la biblioteca de clases.

3. Descargar desde el enlace

Como alternativa, el IronBarcode.Dll se puede descargar y agregar a su proyecto como referencia.

Después de descargar, agregue las siguientes referencias a su proyecto de lector de códigos de barras.

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

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

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

Escáner de código de barras

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

Aquí está el código para el botón "navegar" 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 PictureBox
    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 PictureBox
    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   
Dim open As New OpenFileDialog()
' Image filters  
open.Filter = "Image Files(*.jpg; *.png; *.jpeg; *.gif; *.bmp)|*.jpg;*.png;*.jpeg;*.gif;*.bmp"
If open.ShowDialog() = DialogResult.OK Then
	' Display image in PictureBox
	pictureBox1.Image = New Bitmap(open.FileName)
	' Store image file path in class data member. Initialize it as string ImageFileName;
	ImageFileName = open.FileName
End If
$vbLabelText   $csharpLabel

El código para el botón "escanear código":

// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
// Read the barcode from the image file path
BarcodeResult Result = BarcodeReader.Read(ImageFileName);
// Display the decoded text in TextBox
textBox1.Text = Result.Text;
' Read the barcode from the image file path
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName)
' Display the decoded text in TextBox
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

El escáner de códigos de barras muestra los datos en el cuadro de texto así:

Cómo usar escáneres de códigos de barras en la aplicación C# Windows, Figura 2: Imagen de Código de Barras a Escanear con C# Imagen de Código de Barras a Escanear con C#

Escáner de código QR

En esta sección, la Biblioteca IronBarcode maneja efectivamente situaciones del mundo real que involucran códigos QR inclinados. Aunque el código QR en ángulo inclinado puede ser manejado y leído por el método Read, puede llevar más tiempo resolverlo. La biblioteca IronBarcode proporciona una forma personalizada de usar BarcodeReaderOptions como un parámetro extra para tratar con dicha entrada de imagen. El código es el siguiente:

// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
// Define a collection of image filters to apply
var filtersToApply = new ImageFilterCollection() {
    new SharpenFilter(),
    new InvertFilter(),
    new ContrastFilter(),
    new BrightnessFilter(),
    new AdaptiveThresholdFilter(),
    new BinaryThresholdFilter()
};

// Configure barcode reader options with specified filters
BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions() {
    ImageFilters = filtersToApply,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
};

// Read the barcode/QR code with custom options and display result
BarcodeResult Result = BarcodeReader.Read(ImageFileName, myOptionsExample);
textBox1.Text = Result.Text;
' Define a collection of image filters to apply
Dim filtersToApply = New ImageFilterCollection() From {
	New SharpenFilter(),
	New InvertFilter(),
	New ContrastFilter(),
	New BrightnessFilter(),
	New AdaptiveThresholdFilter(),
	New BinaryThresholdFilter()
}

' Configure barcode reader options with specified filters
Dim myOptionsExample As New BarcodeReaderOptions() With {
	.ImageFilters = filtersToApply,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}

' Read the barcode/QR code with custom options and display result
Dim Result As BarcodeResult = BarcodeReader.Read(ImageFileName, myOptionsExample)
textBox1.Text = Result.Text
$vbLabelText   $csharpLabel

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

Cómo usar escáneres de códigos de barras en la aplicación C# Windows, Figura 4: Imagen de Código Qr Inclinada Imagen de Código Qr Inclinada

Lectura de múltiples códigos de barras en un solo escaneo

Documentos PDF

Las imágenes de código de barras se pueden escanear desde un archivo PDF, y cada resultado se puede mostrar de manera adecuada como se desee. El siguiente código de ejemplo le permite leer múltiples códigos de barras desde un archivo PDF.

// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
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);
}
// Scan for multiple barcodes within a PDF document
BarcodeResult[] PDFResults = BarcodeReader.ReadPdf("MultipleBarcodes.pdf");

// Work with the results found
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);
}
' Scan for multiple barcodes within a PDF document
Dim PDFResults() As BarcodeResult = BarcodeReader.ReadPdf("MultipleBarcodes.pdf")

' Work with the results found
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ódigos de barras y códigos QR presentes en archivos PDF:

Cómo usar escáneres de códigos de barras en la aplicación C# Windows, Figura 3: C# - Leyendo Códigos de Barras de un PDF resultados C# - Leyendo Códigos de Barras de un PDF resultados

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

En casos de uso del mundo real, los códigos de barras se encuentran a menudo con imperfecciones en imágenes, escaneos, miniaturas o fotografías, y pueden contener ruido digital o estar inclinados. Esta sección demuestra cómo leer datos de código de barras desde miniaturas.

Miniaturas

La Biblioteca IronBarcode utiliza el Generador de Código 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ódigos de barras en la app C# Windows, Figura 5: Corrección automática de tamaño de miniatura de código de barras. Corrección automática de tamaño de miniatura de código de barras.Archivo legible usando IronBarcode en C# Corrección automática del tamaño de las miniaturas de código de barras. Archivo legible usando IronBarcode en C#

IronBarcode también permite personalizar la velocidad de lectura de códigos de barras con regiones de recorte, multihilo, y precisión del modelo de ML.

// 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

Visite la página de documentos oficiales para obtener más información sobre IronBarcode. Actualmente, si compras el Iron Suite completo, puedes obtener cinco bibliotecas por el precio de solo dos. Visita la página de documentos oficiales para obtener más información sobre IronBarcode.

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

Preguntas Frecuentes

¿Qué es un escáner de código de barras en el contexto de aplicaciones C#?

Un escáner de código de barras es un dispositivo que lee códigos de barras impresos, decodifica la información y la envía a una computadora. En aplicaciones C#, esta funcionalidad puede implementarse utilizando bibliotecas como IronBarcode.

¿Cómo puedo crear una aplicación de formularios de Windows para el escaneo de códigos de barras usando C#?

Para crear una aplicación de formularios de Windows para escanear códigos de barras en C#, abra Visual Studio, cree un nuevo proyecto utilizando la 'Plantilla de aplicación de formularios de Windows', configure su .NET Framework objetivo, y utilice controles como PictureBox, Label, TextBox y Button para diseñar el formulario.

¿Cuál es el método recomendado para instalar una biblioteca de código de barras en un proyecto C#?

Puede instalar una biblioteca de código de barras como IronBarcode en un proyecto C# a través del Consola del Administrador de Paquetes con Install-Package IronBarCode, a través del Administrador de Paquetes NuGet, o descargando el DLL y agregándolo como referencia.

¿Es posible leer múltiples códigos de barras en un escaneo usando una biblioteca C#?

Sí, usando IronBarcode, puede leer múltiples códigos de barras en un solo escaneo con el método BarcodeReader.ReadPdf, incluso desde documentos PDF.

¿Cómo gestiona la biblioteca la lectura de códigos de barras desde imágenes de baja calidad?

IronBarcode puede interpretar códigos de barras desde imágenes de baja calidad aplicando filtros de imagen y técnicas de escalado para reducir el ruido digital, garantizando lecturas precisas.

¿Qué formatos de códigos de barras son compatibles con bibliotecas C# como IronBarcode?

IronBarcode soporta una amplia gama de formatos de códigos de barras, incluidos códigos QR y Code128. Puede leer estos formatos incluso si las imágenes son imperfectas o se capturan con una cámara.

¿Cuáles son los pasos para implementar la lectura de códigos de barras en una aplicación .NET?

Para implementar la lectura de códigos de barras, cargue una imagen en un PictureBox, active la acción de 'escanear código' y use IronBarcode para procesar y mostrar el texto descodificado en un TextBox.

¿Puede IronBarcode manejar códigos QR sesgados o inclinados de manera efectiva?

Sí, IronBarcode puede manejar efectivamente códigos QR sesgados utilizando BarcodeReaderOptions para aplicar los filtros de imagen necesarios y ajustes para una lectura precisa.

¿Qué características de personalización ofrece IronBarcode para la lectura de códigos de barras?

IronBarcode ofrece características como regiones de recorte, multi-threading y ajustes de parámetros para mejorar la velocidad y precisión de la lectura de códigos de barras.

¿Dónde puedo encontrar más información detallada sobre el uso de bibliotecas de códigos de barras en C#?

Para obtener más información detallada sobre el uso de bibliotecas de códigos de barras en C#, puede visitar la página de documentación oficial en el sitio web de Iron Software.

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