Cómo generar formatos de datos de códigos de barras en C#

Cómo generar formatos de datos en C# con IronBarcode

This article was translated from English: Does it need improvement?
Translated
View the article in English

En lugar de simplemente leer el código de barras e imprimir los valores en la consola, IronBarcode ofrece mucho más. Proporciona varios formatos de salida que abren el camino para que los usuarios procesen más los resultados leídos. Estos formatos incluyen propiedades como imagen del código de barras, tipo de código de barras, BinaryValue, coordenadas, altura, ancho, número de página, código de barras, orientación de página, texto y valor.

Los usuarios pueden manipular estas propiedades más a fondo dentro del programa. Exploremos cómo usar estas propiedades y los casos de uso donde pueden ser útiles.

Inicio rápido: Leer Valor y Tipo de Código de Barras en Una Línea

Este ejemplo muestra lo fácil que es leer un código de barras desde una imagen usando IronBarcode: solo una línea para cargar y luego imprimir inmediatamente el valor y el tipo del código de barras. Es perfecto para comenzar rápidamente.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronBarcode con el gestor de paquetes NuGet

    PM > Install-Package BarCode

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

    var result = IronBarCode.BarcodeReader.Read("input.png");
    Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

Formatos de salida y casos de uso

BarcodeResult almacena varias propiedades útiles. Estas propiedades se enumeran a continuación:

  • BarcodeImage
  • BarcodeType
  • BinaryValue
  • Coordenadas, Altura y Ancho
  • PageNumber
  • Barcode y PageOrientation
  • Texto y Valor

Imagen de código de barras

Una vez que IronBarcode realiza un proceso de lectura en una imagen, los códigos de barras encontrados en la imagen estarán almacenados en BarcodeResult como la propiedad BarcodeImage de tipo AnyBitmap. La propiedad BarcodeImage almacena las imágenes de los códigos de barras encontrados. Los usuarios pueden recuperar este objeto para procesar más la imagen o guardarla como una copia permanente. Esto proporciona eficiencia y facilidad de uso al eliminar la necesidad de escribir código adicional para extraer las imágenes de códigos de barras de una imagen.

Veamos el fragmento de código a continuación que demuestra un posible caso de uso para este formato de salida:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeImage.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Read barcode from PDF file
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

// Create list for barcodes
List<AnyBitmap> barcodeList = new List<AnyBitmap>();

foreach (BarcodeResult barcode in result)
{
    barcodeList.Add(barcode.BarcodeImage);
}

// Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif");
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Collections.Generic

' Read barcode from PDF file
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

' Create list for barcodes
Private barcodeList As New List(Of AnyBitmap)()

For Each barcode As BarcodeResult In result
	barcodeList.Add(barcode.BarcodeImage)
Next barcode

' Create multi-page TIFF
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif")
$vbLabelText   $csharpLabel

El fragmento de código anterior ilustra uno de los casos de uso para este formato de salida. Específicamente, está diseñado para crear una imagen TIFF de varias páginas a partir de códigos de barras detectados dentro de un documento PDF. Primero, escaneamos o detectamos códigos de barras en el PDF de muestra. Luego, creamos una lista de AnyBitmap donde almacenamos la información de la propiedad BarcodeImage. Finalmente, utilizamos esta lista para generar un TIFF de múltiples páginas utilizando el método CreateMultiFrameTiff.

Por favor nota La propiedad BarcodeImage de BarcodeResult solo almacena las imágenes de los códigos de barras encontrados durante la lectura, no la imagen de entrada completa en sí.

Tipo de código de barras

Esta propiedad ayuda a los usuarios a determinar qué tipo de código de barras está presente en la imagen o documento de entrada. Sin embargo, la limitación de esta función es que el tipo de código de barras dentro de la imagen debe ser de aquellos que son compatibles y que pueden ser leídos por IronBarcode. Para saber más sobre los tipos de códigos de barras compatibles en IronBarcode, los usuarios pueden consultar este artículo.

El fragmento de código a continuación demuestra cómo los usuarios pueden recuperar los valores de los códigos de barras, así como el tipo de código de barras en una imagen imprimiendo los valores en la consola.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeType.cs
using IronBarCode;
using System;

// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("bc3.png");

// Output barcode type to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine("The barcode value is " + barcode.ToString() + " and the barcode type is " + barcode.BarcodeType);
}
Imports IronBarCode
Imports System

' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("bc3.png")

' Output barcode type to console
For Each barcode As BarcodeResult In result
	Console.WriteLine("The barcode value is " & barcode.ToString() & " and the barcode type is " & barcode.BarcodeType)
Next barcode
$vbLabelText   $csharpLabel

A partir del fragmento de código anterior, realizamos la lectura de código de barras llamando al método BarcodeReader.Read() en la imagen de entrada. Esto devuelve un objeto BarcodeResults que almacena todos los BarcodeResult de leer todos los códigos de barras disponibles en la imagen. A continuación, iteramos a través del objeto BarcodeResults para recuperar el BarcodeResult y obtener el valor y el tipo del código de barras impresos en la consola.

Valor binario

Usando IronBarcode, los usuarios también pueden recuperar el arreglo de bytes del valor del código de barras accediendo a la propiedad BinaryValue del objeto BarcodeResult. Esto permite a los usuarios manipular el valor del código de barras más a fondo dentro del programa.

El fragmento de código a continuación demuestra un caso de uso de recuperación del valor del código de barras como datos binarios:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BinaryValue.cs
using IronBarCode;

// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");

int i = 1;
foreach (BarcodeResult barcode in result)
{
    var binaryValue = barcode.BinaryValue;
    var barcodeType = IronBarCode.BarcodeEncoding.QRCode;

    // Create QR code
    GeneratedBarcode generatedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType);

    // Export QR code
    generatedBarcode.SaveAsPng($"qrFromBinary{i}.png");
    i++;
}
Imports IronBarCode

' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")

Private i As Integer = 1
For Each barcode As BarcodeResult In result
	Dim binaryValue = barcode.BinaryValue
	Dim barcodeType = IronBarCode.BarcodeEncoding.QRCode

	' Create QR code
	Dim generatedBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType)

	' Export QR code
	generatedBarcode.SaveAsPng($"qrFromBinary{i}.png")
	i += 1
Next barcode
$vbLabelText   $csharpLabel

Observando el fragmento de código anterior, hemos creado un programa simple que transforma múltiples códigos de barras dentro de una imagen en archivos nuevos codificados en binario por separado. Inicialmente, escaneamos los códigos de barras en la imagen PNG de muestra. Una vez que hemos detectado estos códigos de barras, los iteramos, accedemos a la propiedad BinaryValue, y luego la usamos para crear nuevos archivos binarios.

Coordenadas, altura y ancho del código de barras

Otra propiedad del objeto BarcodeResult a la que los usuarios pueden acceder es a las coordenadas del código de barras, incluidas X1, Y1, y X2, Y2, así como su Altura y Ancho dentro de un archivo o documento de imagen. Estas propiedades resultan ser muy útiles cuando los usuarios necesitan recuperar información sobre la ubicación y dimensiones del código de barras.

Usemos una ilustración para resaltar la ubicación y dimensiones del código de barras.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-height-width.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Linq;

// Read barcode from PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");

AnyBitmap bitmap = AnyBitmap.FromFile("multiple-barcodes.png");

foreach (BarcodeResult barcode in result)
{
    PointF[] barcodePoints = barcode.Points;

    float x1 = barcodePoints.Select(b => b.X).Min();
    float y1 = barcodePoints.Select(b => b.Y).Min();

    Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);

    bitmap = bitmap.Redact(rectangle, Color.Magenta);

    // Save the image
    bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png);
}
Imports System
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Linq

' Read barcode from PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")

Private bitmap As AnyBitmap = AnyBitmap.FromFile("multiple-barcodes.png")

For Each barcode As BarcodeResult In result
	Dim barcodePoints() As PointF = barcode.Points

	Dim x1 As Single = barcodePoints.Select(Function(b) b.X).Min()
	Dim y1 As Single = barcodePoints.Select(Function(b) b.Y).Min()

'INSTANT VB TODO TASK: There is no VB equivalent to the C# 'null-forgiving operator':
'ORIGINAL LINE: Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);
	Dim rectangle As New Rectangle(CInt(Math.Truncate(x1)), CInt(Math.Truncate(y1)), CInt(barcode.Width), CInt(barcode.Height))

	bitmap = bitmap.Redact(rectangle, Color.Magenta)

	' Save the image
	bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png)
Next barcode
$vbLabelText   $csharpLabel
Sample input before redaction
Redacted image

El fragmento de código anterior se usa para redactar múltiples códigos de barras encontrados en un archivo de imagen. Para lograr esto, utilizamos una combinación de dos bibliotecas, IronBarcode y IronDrawing. Para obtener el objeto BarcodeResult y extraer las propiedades de éste, primero leemos los códigos de barras disponibles en un archivo de imagen utilizando el método BarcodeReader.Read(). Conjuntamente, el archivo de imagen de entrada también necesita ser convertido en un objeto AnyBitmap para aplicar el método de redacción a la imagen. Una vez que tenemos el objeto BarcodeResults, podemos aplicar un bucle e iterar a través de él para obtener los X1, Y1, Ancho y Altura de cada código de barras disponible en la imagen y utilizarlos en las propiedades CropRectangle del método AnyBitmap.Redact().

Número de página

Los usuarios también pueden recuperar el número de página donde se encontró el código de barras. Esta es una característica útil para los usuarios que buscan usar un documento de múltiples páginas que contiene múltiples códigos de barras y necesitan saber la ubicación de los códigos de barras encontrados en el documento para un procesamiento más profundo.

Veamos el fragmento de código a continuación:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-page-number.cs
using IronBarCode;
using System;

// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

// Output page number to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine("The barcode value " + barcode.ToString() + " is found on page number " + barcode.PageNumber);
}
Imports IronBarCode
Imports System

' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

' Output page number to console
For Each barcode As BarcodeResult In result
	Console.WriteLine("The barcode value " & barcode.ToString() & " is found on page number " & barcode.PageNumber)
Next barcode
$vbLabelText   $csharpLabel

El simple fragmento de código anterior demuestra un caso de uso donde los usuarios necesitan que el programa devuelva el valor de los códigos de barras encontrados en un documento PDF de múltiples páginas y sus respectivos números de página. El fragmento de código anterior utiliza el método BarcodeReader.ReadPdf() para leer los códigos de barras dentro de un documento PDF de múltiples páginas, que devuelve un objeto BarcodeResults almacenando cada BarcodeResult encontrado en el documento. Aplicamos un bucle e iteramos a través de cada elemento en el objeto para recuperar el valor de los códigos de barras y el número de página donde se encontraron los códigos de barras. Aparte de este caso de uso, los usuarios también pueden usar esta propiedad para depurar si todos los códigos de barras en un documento pudieron ser leídos.

Por favor notaEl valor devuelto por esta propiedad está basado en 1 , lo que significa que la primera página siempre es uno y no cero.

Rotación de código de barras y orientación de página

Usando IronBarcode, los usuarios también pueden recuperar información sobre la orientación del código de barras y la orientación de la página donde se encontró el código de barras. Para extraer estas dos piezas de información, los usuarios pueden acceder a las propiedades Rotation y PageOrientation del objeto BarcodeResult. Rotation devolverá un entero que representa el ángulo de rotación del código de barras encontrado.

Veamos el fragmento de código a continuación:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-orientation.cs
using IronBarCode;
using System;

// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

// Output page orientation and rotation to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine(barcode.Value);
    Console.WriteLine(barcode.PageOrientation);
    Console.WriteLine(barcode.Rotation);
}
Imports IronBarCode
Imports System

' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

' Output page orientation and rotation to console
For Each barcode As BarcodeResult In result
	Console.WriteLine(barcode.Value)
	Console.WriteLine(barcode.PageOrientation)
	Console.WriteLine(barcode.Rotation)
Next barcode
$vbLabelText   $csharpLabel

El simple fragmento de código anterior fue ejecutado con la entrada PDF de muestra adjunta para demostrar que los usuarios pueden recuperar la orientación de página y rotación del código de barras obteniendo el valor de BarcodeResult.PageOrientation y BarcodeResult.Rotation, respectivamente. Esta característica es útil principalmente para propósitos de depuración.

Por favor notaIronBarcode solo puede leer códigos de barras con rotaciones de 0 , 90 , 180 y 270 grados. IronBarcode no devolverá ningún valor si el código de barras tiene un valor de rotación diferente a los mencionados. PageOrientation devolverá un objeto PageOrientation , que consta de Portrait u Landscape .

Texto y valor

Por supuesto, la propiedad principal que los usuarios querrán recuperar al usar IronBarcode es su valor y texto. Estas dos propiedades a menudo se utilizan indistintamente y devolverán el mismo valor. Además de eso, los usuarios también pueden usar el método BarcodeResult.ToString() para lograr el mismo resultado. El fragmento de código a continuación demuestra:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-text-value.cs
using IronBarCode;
using System;

// Read barcode from PDF
BarcodeResults result = BarcodeReader.ReadPdf("barcodestamped3.pdf");

// Output text value to console
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine(barcode.Value);
    Console.WriteLine(barcode.Text);
    Console.WriteLine(barcode.ToString());
}
Imports IronBarCode
Imports System

' Read barcode from PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("barcodestamped3.pdf")

' Output text value to console
For Each barcode As BarcodeResult In result
	Console.WriteLine(barcode.Value)
	Console.WriteLine(barcode.Text)
	Console.WriteLine(barcode.ToString())
Next barcode
$vbLabelText   $csharpLabel

A partir del fragmento de código anterior, los usuarios solo necesitan usar unas pocas líneas de código para leer códigos de barras en una imagen usando IronBarcode. Después de iterar a través de los BarcodeResults devueltos por el método BarcodeReader.Read(), enviamos a la consola el resultado de obtener las propiedades de valor y texto, así como llamar al método BarcodeResult.ToString() para mostrar que todos estos devolvieron el mismo valor.

En pocas palabras, IronBarcode es una API perfecta para que los usuarios realicen múltiples operaciones relacionadas con los códigos de barras, no limitadas a escribir y decodificar códigos de barras. Con varios formatos de datos de salida compatibles, los usuarios pueden hacer mucho más con el objeto BarcodeResult devuelto por IronBarcode.

Preguntas Frecuentes

¿Qué formatos de datos de salida están disponibles para el procesamiento de códigos de barras en .NET C#?

IronBarcode ofrece varios formatos de datos de salida para el procesamiento de códigos de barras en .NET C#, incluidos la imagen del código de barras, tipo, `BinaryValue`, coordenadas, altura, anchura, número de página, orientación, texto y valor. Estos formatos facilitan diversas operaciones relacionadas con códigos de barras.

¿Cómo puedo capturar y almacenar imágenes de códigos de barras usando C#?

Puedes usar la propiedad `BarcodeImage` en IronBarcode para capturar y almacenar imágenes de códigos de barras, lo cual es útil para tareas como crear archivos TIFF de múltiples páginas a partir de códigos de barras detectados.

¿Cómo puedo identificar el tipo de un código de barras en una imagen usando C#?

La propiedad `BarcodeType` en IronBarcode te permite identificar el tipo de un código de barras presente en una imagen. Esto ayuda a procesar los tipos de códigos de barras compatibles de manera efectiva.

¿Cómo convertir datos de un código de barras en un arreglo de bytes?

Accediendo a la propiedad `BinaryValue` en IronBarcode, puedes convertir los datos de un código de barras en un arreglo de bytes, que puede usarse para una manipulación o almacenamiento de datos adicional.

¿Cómo obtengo las coordenadas y dimensiones de un código de barras en una imagen?

IronBarcode proporciona las propiedades de coordenadas, altura y anchura dentro del objeto `BarcodeResult`, lo que te permite obtener detalles sobre la ubicación y dimensiones de un código de barras en una imagen.

¿Cómo gestionar documentos múltiples con datos de códigos?

Las propiedades `PageNumber` y `PageOrientation` en IronBarcode ayudan a gestionar documentos de múltiples páginas identificando dónde se encuentra cada código de barras y su orientación, lo que facilita un procesamiento eficiente de documentos.

¿Cuál es la diferencia entre las propiedades `text` y `value` para códigos de barras en C#?

En IronBarcode, tanto las propiedades `text` como `value` devuelven la misma salida para un código de barras. Puedes usar el método `BarcodeResult.ToString()` para lograr resultados similares.

¿Existen limitaciones en la detección de rotación de códigos de barras con IronBarcode?

Sí, IronBarcode puede leer códigos de barras rotados a 0, 90, 180 y 270 grados. No soporta otros ángulos de rotación para la detección de códigos de barras.

Hairil Hasyimi Bin Omar
Ingeniero de Software
Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está refinando su conocimiento de C#, Python y Java, usando ese conocimiento para agregar valor a los miembros del equipo en Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA en Malasia, donde se ...
Leer más
¿Listo para empezar?
Nuget Descargas 1,979,979 | Version: 2025.11 recién lanzado