Cómo leer códigos de barras a partir de imágenes utilizando C#
IronBarcode lee códigos de barras de imágenes en C# con una sola línea de código usando BarcodeReader.Read(), admitiendo múltiples formatos de imagen incluyendo PNG, JPEG, GIF, BMP, TIFF y SVG, con opciones personalizables para mejorar el rendimiento y la precisión.
Una de las características clave de IronBarcode es su capacidad para leer códigos de barras directamente en múltiples formatos de imagen. Los siguientes formatos de imagen son actualmente soportados por IronBarcode:
- Gráficos Vectoriales Escalables (SVG)
- Grupo de Expertos en Fotografía (JPEG)
- Gráficos de Red Portátiles (PNG)
- Formato de Intercambio de Gráficos (GIF)
- Formato de Archivo de Imagen Etiquetada (TIFF)
- Archivo de Imagen BMP
Esto es posible gracias a nuestra biblioteca de código abierto, IronDrawing. Para obtener una lista completa de los formatos de código de barras soportados, incluidos los tipos 1D y 2D, consulte nuestra completa documentación.
Inicio rápido: Leer códigos de barras desde una imagen en segundosCon una simple llamada a IronBarCode.BarcodeReader.Read(), puedes extraer datos del código de barras directamente desde formatos de archivos de imagen como PNG, JPEG, GIF, BMP y TIFF. Comienza al instante—sin configuración compleja, solo resultados inmediatos.
-
1Install IronBarcode with NuGet Package Manager
-
2Copie y ejecute este fragmento de código.
var results = IronBarCode.BarcodeReader.Read("path/to/image.png");C# -
3Despliegue para probar en su entorno real
Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)

- Descargue la biblioteca C# para leer el código de barras de una imagen
- Utilice el método
Readpara leer valores de códigos de barras de varios formatos de imagen - Utilice la clase BarcodeReaderOptions para configurar los ajustes de lectura
- Especifique regiones de código de barras en la imagen con la propiedad CropArea
- Especifique los tipos de códigos de barras que se leerán configurando la propiedad ExpectBarcodeTypes
¿Cómo leer códigos de barras directamente de imágenes?
A continuación se explica cómo utilizar IronBarcode para la lectura de códigos de barras. Para obtener un tutorial completo sobre lectura de códigos de barras en C# / .NET, incluidas técnicas avanzadas para el procesamiento de PDF y operaciones por lotes, visite nuestra guía detallada:
using IronBarCode;
using System;
var myBarcode = BarcodeReader.Read(@"image_file_path.jpg"); //image file path
foreach (var item in myBarcode)
{
Console.WriteLine(item.ToString());
}Imports IronBarCode
Imports System
Private myBarcode = BarcodeReader.Read("image_file_path.jpg") 'image file path
For Each item In myBarcode
Console.WriteLine(item.ToString())
Next item

Para usar IronBarcode, lo primero que tienes que hacer es instalar la biblioteca IronBarcode a través del administrador de paquetes NuGet de Microsoft Visual Studio en tu proyecto, como se muestra en la imagen a continuación. Esto te permitirá acceder al método BarcodeReader.Read() de IronBarcode para leer directamente imágenes de códigos de barras.
IronBarcode ofrece simplicidad al permitir a los usuarios usar solo BarcodeReader.Read() para leer un archivo de imagen que ya ha sido incluido dentro del proyecto especificando la cadena de nombre de archivo o la cadena de ruta de archivo como parámetro para el método. La mejor práctica es usar el literal de cadena textual, "@" al especificar una ruta de archivo en el método para evitar agregar múltiples caracteres de escape "" en la cadena de ruta del archivo.
Adjunta el método Values() al final de la llamada al método BarcodeReader.Read() para obtener el valor del código de barras como un objeto System.String[].
Para mostrar el resultado en la consola, puedes usar un bucle foreach para iterar sobre los valores almacenados en el array string[] y dentro del bloque del bucle, llama al método Console.WriteLine() con la variable del iterador como parámetro.
IronBarcode es capaz de leer formatos de códigos de barras unidimensionales (Codabar, Code128, Code39, Code93, EAN13, EAN18, ITF, MSI, UPCA, UPCE) así como formatos de códigos de barras bidimensionales (Aztec, DataMatrix, QRCode) en varios formatos de imagen.
¿Cómo puedo configurar las opciones del lector de códigos de barras para obtener un mejor rendimiento?
¿La lectura de códigos de barras es demasiado lenta? ¿Es el código de barras demasiado pequeño en la imagen, lo que hace que IronBarcode no pueda leerlo? ¿Quieres leer solo ciertas áreas de una imagen? ¿Quieres leer solo ciertos tipos de códigos de barras en una imagen con una mezcla de códigos de barras? ¿Quieres mejorar el rendimiento general de la lectura?
BarcodeReaderOptions permite a los usuarios ajustar o modificar el comportamiento del lector de códigos de barras para abordar todos estos problemas. Para ejemplos detallados sobre configuración de opciones del lector de códigos de barras, consulta nuestra guía completa. Las siguientes secciones discuten todas las propiedades ajustables disponibles en BarcodeReaderOptions una por una.
¿Cómo especifico qué área de la imagen debo leer?
CropArea es una propiedad del tipo IronSoftware.Drawing.CropRectangle disponible en BarcodeReaderOptions que permite a los usuarios especificar el área que IronBarcode debe leer en una imagen. Esto ayuda a mejorar el rendimiento de la lectura, ya que el lector de códigos de barras no escanea toda la imagen en busca de códigos de barras, además de mejorar la precisión de la lectura, ya que se ha especificado el área de lectura. Más información sobre cómo especificar regiones de cultivo para un rendimiento óptimo.
Para establecer la propiedad CropArea, simplemente instancia un nuevo objeto del tipo Rectangle y especifica las coordenadas del rectángulo, el ancho y el largo del rectángulo como argumentos. La unidad de medida aceptada es el píxel (px).
// Example of setting CropArea
var cropArea = new IronSoftware.Drawing.Rectangle(x: 100, y: 100, width: 300, height: 300);
var options = new BarcodeReaderOptions()
{
CropArea = cropArea
};Imports IronSoftware.Drawing
' Example of setting CropArea
Dim cropArea As New Rectangle(x:=100, y:=100, width:=300, height:=300)
Dim options As New BarcodeReaderOptions() With {
.CropArea = cropArea
}¿Qué tipos de BarCode debo especificar para una lectura más rápida?
Por defecto, todos los códigos de barras soportados en IronBarcode serán escaneados en una imagen. Sin embargo, si el usuario sabe qué tipos de códigos de barras están disponibles o desea que se lean en una imagen, configurar esta propiedad para leer sólo determinados tipos de códigos de barras aumentará en gran medida el rendimiento y la precisión de la lectura, ya que el lector de códigos de barras no necesita iterar a través de colecciones de códigos de barras para interpretar y leer un código de barras.
Para usar esta propiedad, simplemente ajusta ExpectBarcodeTypes a uno de los campos de la enumeración BarcodeEncoding. A continuación, presentamos ejemplos de cada tipo de código de barras soportado por IronBarcode.
// Example: Expect only QR codes and Code128
var options = new BarcodeReaderOptions()
{
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128
};' Example: Expect only QR codes and Code128
Dim options As New BarcodeReaderOptions() With {
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128
}¿Cuándo debo desactivar la lectura múltiple de códigos de barras?
IronBarcode escaneará todos los códigos de barras disponibles en una imagen por defecto, lo que incluye escanear todo el archivo de imagen y agregar los valores de los códigos de barras leídos en la matriz de cadenas. Sin embargo, si los usuarios no desean leer múltiples códigos de barras en un archivo de imagen, los usuarios pueden establecer esta propiedad en false, lo que hará que el lector de códigos de barras deje de escanear una vez que se haya encontrado un valor de código de barras. Esto nuevamente, mejorará el rendimiento y la velocidad de lectura de IronBarcode. Para obtener más información sobre lectura de múltiples códigos de barras, consulte nuestra guía específica.
¿Cómo mejoran los filtros de imagen el reconocimiento de códigos de barras?
Una de las propiedades que se pueden agregar en BarcodeReaderOptions es una colección de filtros de imagen. Los filtros de imagen son importantes para el pre-procesamiento de la imagen en bruto alimentada a IronBarcode. Para aplicar filtros de imagen dentro de BarcodeReaderOptions, los usuarios deben primero iniciar y especificar la colección ImageFilter que se usará. Si desea una orientación completa sobre las técnicas de corrección de imágenes, incluidas las aplicaciones de filtros, visite nuestro tutorial.
¿Cómo puedo optimizar los subprocesos para mejorar el rendimiento?
IronBarcode permite a los usuarios habilitar y ajustar la cantidad de ejecución de hilos paralelos, lo que a su vez mejorará la velocidad y eficiencia del proceso. Los hilos paralelos significan la ejecución de múltiples hilos simultáneamente en diferentes núcleos del procesador. La cantidad predeterminada para la propiedad MaxParallelThread en IronBarcode es 4. Los usuarios pueden ajustarla en función de las capacidades y la cantidad de recursos que tienen sus máquinas.
¿Debo activar el procesamiento multihilo?
Esta propiedad permite a IronBarcode leer múltiples imágenes en paralelo. El valor predeterminado para #Multithreaded es true, por lo tanto, los múltiples hilos se gestionarán automáticamente para mejorar el rendimiento en tareas de lectura de códigos de barras por lotes.
¿Por qué debo eliminar los falsos positivos?
Esta propiedad elimina cualquier lectura de código de barras incorrecta positiva. Lecturas falsas son solo lecturas erróneas marcadas como válidas. Esto puede suceder debido a errores en el proceso de secuenciación o errores en el etiquetado o preparación del código de barras. Por lo tanto, establecer RemoveFalsePositive como true eliminará las lecturas de códigos de barras falsos positivos, mejorando así la precisión de la lectura de códigos de barras. Sin embargo, si los usuarios optan por rendimiento a costa de la precisión, establecer esta propiedad en false ayudaría. El valor por defecto para esta propiedad es true.
¿Cómo afecta MinScanLines a la precisión de la detección?
MinScanLines establece el número mínimo de líneas de escaneo que deben coincidir en un resultado de código de barras para que se considere válido. El valor predeterminado es 2. Aumentar este valor reduce los falsos positivos, pero puede impedir la detección de BarCodes delgados o de baja calidad. Reducirlo a 1 aumenta la sensibilidad para BarCodes difíciles, con el riesgo de introducir ruido.
¿Qué modos de exploración están disponibles para diferentes casos de uso?
Define cómo IronBarcode escanea y detecta códigos de barras en una imagen.
Auto: Lee códigos de barras con preprocesamiento de imagen automático y las opciones de lector más óptimas configuradas. Recomendado para mejores resultados y rendimiento.OnlyDetectionModel: Escanea la imagen en busca de códigos de barras y devuelve sus posiciones como un array deIronSoftware.Drawing.PointF. Este modo no lee los códigos de barras detectados; solo devuelve las posiciones de cada código de barras.MachineLearningScan: Escanea la imagen en busca de códigos de barras con detección por aprendizaje automático y los lee.OnlyBasicScan: Lee códigos de barras sin detección de aprendizaje automático, preprocesamiento de imagen automático ni configuración de opciones de lector. Esta opción se puede usar solo conIronBarCode.Slim.
¿Cómo afecta la configuración de la velocidad de lectura a la precisión?
Como su nombre lo indica, la propiedad Speed permite a los usuarios optimizar aún más el rendimiento del lector de IronBarcode. Al igual que la propiedad RemoveFalsePositive, ajustar esta propiedad mejora el rendimiento a costa de la precisión. Para una mirada en profundidad a opciones de velocidad de lectura, incluidos los puntos de referencia de rendimiento, consulta nuestra guía detallada. Acepta la enumeración ReadingSpeed, que tiene 4 niveles como se muestra a continuación:
Faster: Permite la lectura de códigos de barras más rápida, pero reduce la precisión. El proceso omite el pre-procesamiento de la imagen, a menudo resultando en resultados de códigos de barras vacíos. Usa esta configuración solo si la imagen de entrada es nítida y clara.Balanced: Esta configuración es recomendada para la propiedadSpeed. Establece un equilibrio entre precisión y rendimiento de lectura al intentar aplicar un procesamiento ligero a la imagen para esclarecer el área del código de barras y hacerlo más destacado para que el lector de códigos de barras lo detecte. La mayoría de las veces, esta configuración es suficiente para que IronBarcode lea una imagen de código de barras y produzca una salida precisa.Detailed: Para los casos en que usar la configuraciónReadingSpeed.Balancedno tiene éxito en generar valores de códigos de barras de la lectura, los usuarios pueden optar por usarReadingSpeed.Detailed. IronBarcode realizará un procesamiento medio en la imagen para esclarecer el área del código de barras aún más y garantizar que el lector de código de barras detecte el código de barras. Esta configuración es muy útil para detectar una imagen de código de barras pequeña o menos nítida.ExtremeDetail: Esta configuración es la menos recomendada debido a su proceso intensivo en CPU. Se realizará un procesamiento intensivo en la imagen del código de barras para que el lector pueda leer los códigos de barras. Se aconseja a los usuarios que realicen pre-procesamiento de imagen/aplicación de filtros en la imagen antes de optar por esta configuración.
¿Cuándo debo utilizar el modo ampliado de Code39?
Esta configuración permite que los códigos de barras de tipo Code39 sean leídos e interpretados con el modo extendido, aplicando el conjunto completo de caracteres ASCII. Establecer UseCode39ExtendedMode en true permitirá una lectura más precisa de códigos de barras Code39.
¿Cómo implementar la lectura avanzada de códigos de barras con opciones personalizadas?
Ahora que ya conocemos todas las opciones que pueden ajustar los usuarios, ya sea para aumentar el rendimiento o la precisión, vamos a ver cómo aplicarlas en el código. El fragmento de código a continuación demuestra el uso completo de BarcodeReaderOptions:
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Linq;
// Create custom reader options
var options = new BarcodeReaderOptions()
{
// Specify expected barcode types for better performance
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128 | BarcodeEncoding.Code39,
// Define specific area to scan (x, y, width, height in pixels)
CropArea = new Rectangle(100, 100, 500, 400),
// Set reading speed to balance accuracy and performance
Speed = ReadingSpeed.Balanced,
// Enable multithreading for better performance
Multithreaded = true,
MaxParallelThreads = 4,
// Remove false positives for accuracy
RemoveFalsePositive = true,
// Minimum scan lines that must agree for a valid result (default 2)
MinScanLines = 1,
// Enable Code39 extended mode if needed
UseCode39ExtendedMode = true,
// Set scan mode
ScanMode = BarcodeScanMode.Auto,
// Add image filters for better recognition
ImageFilters = new ImageFilterCollection() {
new SharpenFilter(),
new InvertFilter(),
new ContrastFilter()
}
};
// Read barcodes with custom options
var results = BarcodeReader.Read(@"C:\path\to\your\barcode-image.png", options);
// Process results
if (results.Any())
{
foreach (var barcode in results)
{
Console.WriteLine($"Barcode Type: {barcode.BarcodeType}");
Console.WriteLine($"Value: {barcode.Value}");
Console.WriteLine($"Position: {string.Join(", ", barcode.Points.Select(p => $"({p.X}, {p.Y})"))}");
Console.WriteLine("---");
}
}
else
{
Console.WriteLine("No barcodes found in the image.");
}
Del fragmento de código, vemos que para usar BarcodeReaderOptions primero debemos inicializarlo, luego determinar y ajustar las propiedades de BarcodeReaderOptions según las propiedades anteriormente mencionadas. El BarcodeReaderOptions inicializado puede luego ser utilizado como argumento en el método BarcodeReader.Read() junto con el archivo de imagen. Esto aplicará todas las configuraciones en BarcodeReaderOptions al leer un código de barras de la imagen.
Si se encuentra con problemas por los que no se reconoce su código de barras, nuestra guía de solución de problemas ofrece soluciones para problemas comunes y consejos para mejorar la precisión del escaneado de códigos de barras.
Preguntas Frecuentes
¿Qué formatos de imagen son compatibles con la lectura de códigos de barras en C#?
IronBarcode admite la lectura de códigos de barras de múltiples formatos de imagen, incluidos SVG (Scalable Vector Graphics), JPEG, PNG, GIF, TIFF (Tagged Image File Format) y BMP (Bitmap Image File). Esta amplia compatibilidad de formatos es posible gracias a IronDrawing, que permite extraer códigos de barras de distintos tipos de imágenes sin problemas.
¿Cómo puedo leer un código de barras de un archivo de imagen con una sola línea de código?
Con IronBarcode, puede leer códigos de barras a partir de imágenes utilizando una sola línea de código: `var results = IronBarCode.BarcodeReader.Read("ruta/a/imagen.png");`. Esta sencilla llamada al método detecta y extrae automáticamente los datos del código de barras de archivos PNG, JPEG, GIF, BMP y TIFF sin ninguna configuración compleja.
¿Puedo especificar qué tipos de códigos de barras buscar al leer imágenes?
Sí, IronBarcode permite especificar los tipos de códigos de barras mediante la propiedad ExpectBarcodeTypes en BarcodeReaderOptions. Este enfoque específico mejora el rendimiento de la lectura al centrarse únicamente en los formatos de código de barras que espera encontrar en sus imágenes.
¿Es posible leer códigos de barras de una región específica dentro de una imagen?
Por supuesto IronBarcode proporciona la propiedad CropArea que le permite especificar regiones concretas dentro de una imagen donde se encuentran los códigos de barras. Esta característica es especialmente útil para imágenes de gran tamaño o cuando se conoce la ubicación aproximada de los códigos de barras, mejorando significativamente la velocidad de procesamiento.
¿Cómo configuro los ajustes avanzados de lectura para mejorar la precisión?
IronBarcode ofrece la clase BarcodeReaderOptions para configurar opciones avanzadas de lectura. Esto incluye opciones para personalizar la sensibilidad de detección de códigos de barras, el preprocesamiento de imágenes y otros parámetros que pueden mejorar la precisión cuando se trata de imágenes difíciles o tipos específicos de códigos de barras.
¿Qué hace que la lectura de códigos de barras a partir de imágenes sea sencilla para los desarrolladores de C#?
IronBarcode simplifica la lectura de códigos de barras proporcionando el método BarcodeReader.Read() que funciona con múltiples formatos de imagen. Los desarrolladores sólo tienen que especificar el nombre del archivo o la ruta del archivo como parámetro, lo que facilita enormemente la integración de la funcionalidad de lectura de códigos de barras en cualquier aplicación C#.
What are the benefits of using multithreading in IronBarcode?
Multithreading in IronBarcode allows multiple barcodes to be processed simultaneously, improving the speed and efficiency of barcode reading, especially in batch processing tasks.
How do image filters improve barcode recognition in IronBarcode?
Image filters in IronBarcode enhance preprocessing by improving the clarity of barcode images. Filters like the `SharpenFilter` and `ContrastFilter` help optimize image quality for better recognition.
What is the `MinScanLines` property used for in IronBarcode?
The `MinScanLines` property sets the minimum number of scan lines that must agree on a barcode result for it to be considered valid, reducing false positives while ensuring detection accuracy.
How do I handle multiple barcode types with IronBarcode?
In IronBarcode, you can specify which barcode types to read by setting the `ExpectBarcodeTypes` property in `BarcodeReaderOptions`, which improves performance by focusing on specific barcode types.
