IRONSOFTWAREHOME

How to Read Barcodes From System.Drawing in C#

Hairil Hasyimi Bin Omar
Hairil Hasyimi Bin Omar
Updated: 4 de junio de 2026

IronBarcode permite leer códigos de barras de objetos System.Drawing en todos los sistemas operativos convirtiéndolos automáticamente en AnyBitmap a través de IronDrawing, resolviendo la limitación de Microsoft solo para Windows en el soporte de System.Drawing.

Introducción

Los objetos System.Drawing se utilizan ampliamente en .NET para tareas de procesamiento de imágenes. However, Microsoft has discontinued support for System.Drawing on MacOS and Linux, now exclusively supporting Windows. Este cambio ha planteado problemas a los desarrolladores que utilizan IronBarcode en sistemas operativos distintos de Windows, ya que el trabajo con códigos de barras suele implicar gráficos, imágenes y tipos de letra.

Para solucionar este problema, presentamos IronDrawing. Esta biblioteca gratuita y de código abierto, creada por Iron Software, simplifica el soporte multiplataforma y proporciona una experiencia sin interrupciones. Cuando instalas IronBarcode desde NuGet, IronDrawing se incluye automáticamente en tu proyecto.

Para los desarrolladores que no estén familiarizados con la lectura de códigos de barras, consulte nuestro completo Tutorial de lectura de códigos de barras, que cubre los conceptos fundamentales y los patrones de uso básicos. Si trabaja con varios formatos de imagen, nuestra guía sobre lectura de códigos de barras a partir de imágenes proporciona contexto y ejemplos adicionales.

Inicio rápido: Lee un código de barras usando AnyBitmap en una línea fácil

Este fragmento muestra cómo IronBarcode lee códigos de barras creando un System.Drawing.Bitmap y dejando que IronDrawing lo convierta implícitamente en AnyBitmap. Con una sola línea, los desarrolladores de cualquier sistema operativo obtienen resultados rápidos.

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2Copie y ejecute este fragmento de código.

    var results = IronBarCode.BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));
    C#
  3. 3Despliegue para probar en su entorno real

    Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

¿Cómo convierto objetos System.Drawing en AnyBitmap?

Leer códigos de barras de System.Drawing requiere convertir el objeto a AnyBitmap. IronDrawing fue diseñado para facilitar el uso y soporta la conversión implícita de objetos de imagen de System.Drawing en objetos de imagen IronSoftware.Drawing llamados AnyBitmap.

Más allá de los objetos System.Drawing, soportamos la conversión desde otros tipos:

  • System.Drawing.Bitmap
  • System.Drawing.Image
  • SkiaSharp.SKBitmap
  • SkiaSharp.SKImage
  • SixLabors.ImageSharp

Consulte este ejemplo de código para convertir los objetos anteriores. A continuación, se demuestra la conversión de imágenes de códigos de barras de objetos System.Drawing a IronSoftware.Drawing.AnyBitmap:

¿Qué tipos System.Drawing se pueden convertir?

using IronSoftware.Drawing;
using System.Collections.Generic;

List<AnyBitmap> barcodes = new List<AnyBitmap>();

// Instantiate System.Drawing.Bitmap
System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");

// Cast from System.Drawing.Bitmap to AnyBitmap
AnyBitmap barcode1 = bitmapFromBitmap;

barcodes.Add(barcode1);

// Instantiate System.Drawing.Bitmap
System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");

// Cast from System.Drawing.Image to AnyBitmap
AnyBitmap barcode2 = bitmapFromFile;

barcodes.Add(barcode2);

Este código demuestra la integración fluida entre objetos System.Drawing y IronBarcode a través de IronDrawing. Esta compatibilidad se extiende a varios formatos de códigos de barras, detallados en nuestra guía de formatos de códigos de barras compatibles, incluidos los códigos QR, Code 128, Code 39 y muchos otros.

¿Por qué funciona el colado implícito?

En el código anterior, cargamos dos imágenes de códigos de barras como System.Drawing.Bitmap y System.Drawing.Image. Luego, los convertimos implícitamente en AnyBitmap asignándolos a objetos AnyBitmap, y luego agregamos estos objetos a una lista AnyBitmap.

El mecanismo de conversión implícita de IronDrawing utiliza sobrecarga de operadores, proporcionando conversión transparente entre tipos System.Drawing y AnyBitmap. Este patrón de diseño permite a los desarrolladores mantener el código existente al tiempo que obtienen compatibilidad entre plataformas. La conversión conserva todas las propiedades de la imagen, incluida la resolución, la profundidad de color y los datos de píxeles, lo que garantiza que no se pierda calidad.

¿Cuándo se debe utilizar el casting explícito frente al implícito?

Aunque la conversión implícita resulta práctica, en algunos casos puede ser preferible la conversión explícita:

// Implicit casting - clean and simple for straightforward conversions
System.Drawing.Bitmap systemBitmap = new System.Drawing.Bitmap("barcode.png");
AnyBitmap anyBitmap = systemBitmap; // Implicit cast

// Explicit casting - useful when type clarity is important
System.Drawing.Image systemImage = System.Drawing.Image.FromFile("qrcode.jpg");
AnyBitmap explicitBitmap = (AnyBitmap)systemImage; // Explicit cast

// When working with nullable types or conditional logic
System.Drawing.Bitmap? nullableBitmap = GetBitmapFromSource();
if (nullableBitmap != null)
{
    AnyBitmap result = (AnyBitmap)nullableBitmap; // Explicit cast for clarity
    // Process the barcode
}

¿Cuáles son los errores de fundición más comunes?

Al convertir System.Drawing a AnyBitmap, los desarrolladores pueden encontrar:

  1. Excepciones de referencia nula: Verifica que tu objeto System.Drawing no sea nulo antes de convertir
  2. Excepciones de formatos no compatibles: Algunos formatos de imagen exóticos requieren una conversión previa
  3. Cuestiones de memoria: Las imágenes de gran tamaño necesitan patrones de eliminación adecuados

Para solucionar problemas de fundición, nuestra guía de solución de problemas ofrece soluciones a problemas comunes durante el reconocimiento de códigos de barras.

¿Cómo leo códigos de barras de objetos AnyBitmap?

IronBarcode acepta objetos IronSoftware.Drawing.AnyBitmap en todos los métodos sin configuración adicional. Esto simplifica el desarrollo al usar objetos System.Drawing en sistemas operativos no Windows. El siguiente código demuestra esto:

¿Qué métodos aceptan parámetros AnyBitmap?

using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

// Create a list of image file paths to read barcodes from
List<string> barcodeFiles = new List<string>
{
    "test1.jpg",
    "test2.png"
};

foreach (var barcodeFile in barcodeFiles)
{
    // Read the barcode from file path
    var results = BarcodeReader.Read(barcodeFile);
    foreach (var result in results)
    {
        // Output the detected barcode value
        Console.WriteLine(result.Value);
    }
}

Más allá del método básico Read, IronBarcode ofrece varios métodos que aceptan parámetros AnyBitmap. Para escenarios avanzados, consulte nuestra guía sobre lectura de múltiples códigos de barras que demuestra el procesamiento eficiente de múltiples códigos de barras en una sola imagen:

// Advanced barcode reading with options
var readerOptions = new BarcodeReaderOptions
{
    // Specify barcode types to search for
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    // Set confidence threshold
    ConfidenceThreshold = 0.95
};

// Read with specific options
var advancedResults = BarcodeReader.Read(anyBitmap, readerOptions);
C#

¿Cómo manejar múltiples resultados de códigos de barras?

El código anterior amplía el ejemplo anterior. Después de llenar la lista AnyBitmap, iteramos a través de ella y llamamos al método Read en cada objeto AnyBitmap, que devolvió IronBarCode.BarcodeResults. A continuación, iteramos sobre los resultados para imprimir los valores de los códigos de barras en la consola.

Al gestionar varios códigos de barras, aproveche el procesamiento en paralelo para mejorar el rendimiento:

// Parallel processing for multiple barcode images
var barcodeFiles = Directory.GetFiles("barcodes/", "*.png");
var allResults = new ConcurrentBag<BarcodeResult>();

Parallel.ForEach(barcodeFiles, file =>
{
    var bitmap = new System.Drawing.Bitmap(file);
    var anyBitmap = (AnyBitmap)bitmap;
    var results = BarcodeReader.Read(anyBitmap);
    
    foreach (var result in results)
    {
        allResults.Add(result);
    }
    
    bitmap.Dispose(); // Clean up resources
});

// Process all results
foreach (var result in allResults)
{
    Console.WriteLine($"Found {result.BarcodeType}: {result.Value}");
}

¿Qué otras características IronDrawing puedo usar?

La funcionalidad de IronSoftware.Drawing se extiende más allá de la conversión de imágenes. Maneja aspectos de procesamiento de imágenes como colores y fuentes útiles para estilizar códigos de barras y códigos QR. Explora cómo utilizamos IronDrawing para personalizar y agregar logotipos a códigos QR.

IronDrawing proporciona potentes capacidades de manipulación de imágenes que complementan el procesamiento de códigos de barras:

// Using IronDrawing for image preprocessing
using IronSoftware.Drawing;

// Load and preprocess an image before barcode reading
AnyBitmap preprocessedImage = AnyBitmap.FromFile("noisy-barcode.jpg");

// Apply image filters to improve barcode readability
preprocessedImage = preprocessedImage.ToGrayScale();
preprocessedImage = preprocessedImage.Contrast(1.5); // Increase contrast
preprocessedImage = preprocessedImage.Sharpen(); // Sharpen image

// Read the preprocessed barcode
var improvedResults = BarcodeReader.Read(preprocessedImage);

Para situaciones que requieran correcciones de imagen específicas, nuestra guía de corrección de imágenes detalla el uso de filtros para mejorar la legibilidad de los códigos de barras.

¿Por qué elegir IronDrawing sobre System.Drawing?

IronDrawing ofrece ventajas convincentes sobre System.Drawing:

  1. Soporte multiplataforma: Funciona perfectamente en Windows, Linux y macOS, a diferencia de System.Drawing (solo para Windows en .NET Core/5+)
  2. Arquitectura moderna: Construido sobre SkiaSharp y ImageSharp para un mejor rendimiento y gestión de memoria
  3. API simplificada: Mantiene interfaces similares a System.Drawing mientras agrega comodidades modernas
  4. Desarrollo activo: Actualizaciones y mejoras regulares, a diferencia de System.Drawing en modo de mantenimiento
  5. Mejor integración: Diseñado específicamente para un rendimiento óptimo con los productos de Iron Software

Para consideraciones de despliegue, especialmente en entornos de nube, consulta nuestras guías sobre despliegue en Azure y despliegue en AWS que incluyen notas específicas sobre compatibilidad multiplataforma usando IronDrawing.

Ya sea que estés construyendo aplicaciones de escritorio, servicios web o soluciones nativas de la nube, IronDrawing asegura que tu código de procesamiento de códigos de barras se mantenga portátil y eficiente en todas las plataformas, lo que lo convierte en la elección ideal para el desarrollo moderno en .NET.

Preguntas Frecuentes

¿Cómo puedo leer códigos de barras a partir de objetos System.Drawing en plataformas distintas de Windows?

IronBarcode gestiona automáticamente la lectura de códigos de barras multiplataforma a partir de objetos System.Drawing mediante IronDrawing, que los convierte al formato AnyBitmap. Esto resuelve la limitación de Microsoft de que System.Drawing sea exclusivo de Windows, permitiéndole leer códigos de barras en sistemas MacOS y Linux sin problemas.

¿Qué es IronDrawing y por qué se incluye con la lectura de códigos de barras?

IronDrawing es una biblioteca gratuita de código abierto creada por Iron Software que proporciona soporte multiplataforma para operaciones gráficas. Se incluye automáticamente al instalar IronBarcode desde NuGet y permite la lectura de códigos de barras a partir de objetos System.Drawing en todos los sistemas operativos convirtiéndolos al formato compatible AnyBitmap.

¿Cómo convierto un System.Drawing.Bitmap para leer códigos de barras de él?

Puede leer códigos de barras de System.Drawing.Bitmap con una simple conversión a AnyBitmap: `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));`. IronBarcode maneja la conversión automáticamente a través de la función de fundición implícita de IronDrawing.

¿Puedo leer códigos de barras en Linux y MacOS utilizando System.Drawing?

Sí, IronBarcode permite la lectura de códigos de barras a partir de objetos System.Drawing en Linux y MacOS a través de IronDrawing, que convierte automáticamente los objetos System.Drawing al formato multiplataforma AnyBitmap. De este modo se supera la limitación de Microsoft de admitir sólo Windows para System.Drawing.

¿Qué tipos de objetos System.Drawing pueden utilizarse para la lectura de códigos de barras?

IronBarcode soporta la lectura de códigos de barras desde varios objetos System.Drawing incluyendo System.Drawing.Bitmap y otros tipos de imágenes. Estos se convierten automáticamente a AnyBitmap a través de la función de fundición implícita de IronDrawing, lo que permite la funcionalidad de lectura de códigos de barras multiplataforma.

¿Existe una solución sencilla de una sola línea para leer códigos de barras desde System.Drawing?

Sí, IronBarcode proporciona una solución de una sola línea: `var results = BarcodeReader.Read((AnyBitmap)(new System.Drawing.Bitmap("yourImage.png")));`. Esta única línea crea un System.Drawing.Bitmap, lo convierte en AnyBitmap a través de IronDrawing, y lee todos los códigos de barras presentes en la imagen.

Is IronDrawing included when I install IronBarcode?

Yes, when you install IronBarcode from NuGet, IronDrawing is automatically included, ensuring seamless integration for cross-platform barcode scanning.

How do I handle multiple barcodes in a single image using IronBarcode?

Use the BarcodeReader.Read method with AnyBitmap, and leverage parallel processing to efficiently handle and read multiple barcodes in a single image.

What image processing features does IronDrawing provide?

IronDrawing can handle image processing tasks such as color adjustment and font handling, which are useful when styling barcodes and QR codes.

How does implicit casting help in cross-platform development?

Implicit casting in IronDrawing allows developers to convert System.Drawing objects to AnyBitmap without changing existing code, facilitating cross-platform compatibility and development for Linux, macOS, and Windows.

¿Listo para empezar?

Nuget Downloads 2,422,100Versión:2026.9recién lanzado

Obtén tu GRATIS

Clave de prueba de 30 días instantáneamente.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
bullet_testPrueba en producción
sin marcas de agua
bullet_calendarProducto completamente
funcional por 30 días
bullet_supportSoporte técnico 24/5
durante la prueba
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Seleccione Examinar y busque "IronBarcode"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

  1. Descargue y descomprima IronBarCode en una ubicación como ~/Libs dentro de su directorio de Solución
  2. En el Explorador de Soluciones de Visual Studio, haga clic derecho en Referencias. Seleccione Examinar, "IronBarcode.dll"

Licencias desde $999

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta