Cómo leer códigos de barras de objetos System.Drawing

por Hairil Hasyimi Bin Omar

Los objetos System.Drawing son ampliamente utilizados en .NET para tareas relacionadas con el procesamiento de imágenes por parte de los desarrolladores. Sin embargo, Microsoft ha soporte discontinuado para System.Drawing en otros sistemas operativos, como MacOS y Linux, y ahora es compatible exclusivamente con Windows. Este importante cambio ha causado múltiples problemas a los desarrolladores que utilizan IronBarcode en sistemas operativos distintos de Windows. Esto se debe a que el trabajo con códigos de barras suele implicar el uso de objetos como gráficos, imágenes y tipos de letra.

Para resolver este problema, hemos introducido una solución alternativa: IronDrawing. Esta biblioteca gratuita y de código abierto, iniciada por IronSoftware, pretende simplificar el proceso de hacer que funcione en los sistemas operativos que no sea Windows. Esto proporciona una experiencia fácil de usar para nuestros usuarios. Una vez que instale IronBarcode desde NuGet, IronDrawing se incluirá automáticamente en su proyecto.

Biblioteca NuGet C# para

Instalar con NuGet

Install-Package BarCode
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Convertir System.Drawing en AnyBitmap

Leer códigos de barras desde System.Drawing simplemente implica convertir el objeto a AnyBitmap. IronDrawing se diseñó pensando en la facilidad de uso. Por lo tanto, IronDrawing soporta la conversión implícita de objetos de imagen de System.Drawing en objetos de imagen de IronSoftware.Drawing llamados AnyBitmap.

Además de los objetos System.Drawing, también soportamos el casting desde otros tipos de objetos, incluyendo:

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

    Los usuarios pueden consultar ejemplo de código para los objetos de fundición anteriores. A continuación se muestra un fragmento de código que demuestra cómo convertir imágenes de códigos de barras de System.Drawing objects a IronSoftware.Drawing.AnyBitmap.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-cast-to-anybitmap.cs
using IronSoftware.Drawing;
using System.Collections.Generic;

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

//  Instanciar 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);

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

//  Pasar de System.Drawing.Image a AnyBitmap
AnyBitmap barcode2 = bitmapFromFile;

barcodes.Add(barcode2);
Imports IronSoftware.Drawing
Imports System.Collections.Generic

Private barcodes As New List(Of AnyBitmap)()

'  Instanciar System.Drawing.Bitmap
Private bitmapFromBitmap As New System.Drawing.Bitmap("test1.jpg")

'  Cast from System.Drawing.Bitmap to AnyBitmap
Private barcode1 As AnyBitmap = bitmapFromBitmap

barcodes.Add(barcode1)

'  Instanciar System.Drawing.Bitmap
Dim bitmapFromFile As System.Drawing.Image = System.Drawing.Image.FromFile("test2.png")

'  Pasar de System.Drawing.Image a AnyBitmap
Dim barcode2 As AnyBitmap = bitmapFromFile

barcodes.Add(barcode2)
VB   C#

En el fragmento de código anterior, hemos cargado dos imágenes de código de barras como System.Drawing.Bitmap y System.Drawing.Image. A continuación, los convertimos implícitamente en AnyBitmap simplemente asignándolos a objetos AnyBitmap. Posteriormente, añadimos estos objetos a una lista AnyBitmap.

Leer códigos de barras de AnyBitmap

IronBarcode puede aceptar fácilmente objetos IronSoftware.Drawing.AnyBitmap en todos sus métodos sin requerir ninguna configuración adicional. Esto ofrece facilidad de uso a los desarrolladores que utilizan IronBarcode con objetos System.Drawing que no son compatibles con sistemas operativos distintos de Windows. El siguiente fragmento de código muestra cómo hacerlo.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-system-drawing-read-anybitmap.cs
using IronBarCode;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;

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

System.Drawing.Bitmap bitmapFromBitmap = new System.Drawing.Bitmap("test1.jpg");
AnyBitmap barcode1 = bitmapFromBitmap;
barcodes.Add(barcode1);

System.Drawing.Image bitmapFromFile = System.Drawing.Image.FromFile("test2.png");
AnyBitmap barcode2 = bitmapFromFile;
barcodes.Add(barcode2);

foreach (var barcode in barcodes)
{
    //  Leer el código de barras
    var results = BarcodeReader.Read(barcode);
    foreach (var result in results)
    {
        //  Salida del valor del código de barras detectado
        Console.WriteLine(result.Value);
    }
}
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic

Private barcodes As New List(Of AnyBitmap)()

Private bitmapFromBitmap As New System.Drawing.Bitmap("test1.jpg")
Private barcode1 As AnyBitmap = bitmapFromBitmap
barcodes.Add(barcode1)

Dim bitmapFromFile As System.Drawing.Image = System.Drawing.Image.FromFile("test2.png")
Dim barcode2 As AnyBitmap = bitmapFromFile
barcodes.Add(barcode2)

For Each barcode In barcodes
	'  Leer el código de barras
	Dim results = BarcodeReader.Read(barcode)
	For Each result In results
		'  Salida del valor del código de barras detectado
		Console.WriteLine(result.Value)
	Next result
Next barcode
VB   C#

El fragmento de código anterior es una extensión del anterior. Una vez que hemos rellenado la lista AnyBitmap, iteramos a través de la lista y llamamos al método Read en cada objeto AnyBitmap como parámetro, que devuelve IronBarcode.BarcodeResults. A continuación, iteramos sobre el objeto devuelto para imprimir el valor del código de barras en la consola.

El área de funcionalidad de IronSoftware.Drawing no sólo se limita a la fundición de imágenes. También se utiliza mucho en otros aspectos del tratamiento de imágenes, como los colores y las fuentes que son útiles para estilizar los códigos de barras y los códigos QR. Los usuarios pueden explorar cómo utilizamos IronDrawing para personalizar y añadir logotipos a los códigos QR.