Formatos de salida de datos
En lugar de limitarse a leer el código de barras e imprimir los valores en la consola, IronBarcode ofrece mucho más. Ofrece varios formatos de salida que allanan el camino para que los usuarios sigan procesando los resultados de la lectura. Estos formatos incluyen propiedades como imagen de 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 la página, texto y valor.
Los usuarios pueden seguir manipulando estas propiedades dentro del programa. Exploremos cómo utilizar estas propiedades y los casos de uso en los que pueden ser útiles.
Formatos de salida de datos
- Descargar la biblioteca C# para leer códigos de barras
- Preparar el PDF y la imagen para la detección de códigos de barras
- Acceder al tipo de código de barras detectado y a la imagen
- Recuperar las coordenadas x e y del código de barras, así como su altura y ancho
- Leer el texto y valor del código de barras
Empezar a utilizar IronBarcode
Comience a usar IronBarcode en su proyecto hoy con una prueba gratuita.
Formatos de salida y casos de uso
BarcodeResult
almacena varias propiedades útiles. Estas propiedades se enumeran a continuación:
BarcodeImage
TipoDeCódigoDeBarras
BinaryValue
- Coordenadas, altura y anchura
NúmeroDePágina
Barcode
yPageOrientation
- Texto y valor
Imagen de código de barras
Una vez que IronBarcode realiza el proceso de lectura en una imagen, los códigos de barras encontrados en la imagen se almacenarán en BarcodeResult
como una propiedad BarcodeImage
de tipo AnyBitmap
. La propiedad BarcodeImage
almacena las imágenes de código de barras encontradas. Los usuarios pueden recuperar este objeto para seguir procesando la imagen o guardarla como copia permanente. Esto proporciona una forma eficiente y facilidad de uso al eliminar la necesidad de escribir códigos adicionales para extraer los códigos de barras de una imagen.
Veamos el siguiente fragmento de código que muestra un posible caso de uso de 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")
El fragmento de código anterior ilustra uno de los casos de uso de este formato de salida. En concreto, está diseñado para crear una imagen TIFF de varias páginas a partir de códigos de barras detectados en un documento PDF. En primer lugar, escaneamos o detectamos los 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 varias páginas usando el método CreateMultiFrameTiff
.
Atención
BarcodeImage
de BarcodeResult
solo almacena las imágenes de códigos de barras encontrados durante la lectura y no la imagen completa de entrada 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 los soportados y que puedan ser leídos por IronBarcode. Para obtener más información sobre los tipos de códigos de barras compatibles en IronBarcode, los usuarios pueden consultar este artículo.
El siguiente fragmento de código demuestra cómo los usuarios pueden recuperar los valores de código de barras, así como el tipo de código de barras en una imagen mediante la impresión de 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
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
obtenidos al 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 del código de barras y el Tipo de Código de Barras impreso en la consola.
Valor binario
Usando IronBarcode, los usuarios también pueden recuperar el arreglo de bytes del valor del código de barras obteniendo la propiedad BinaryValue
del objeto BarcodeResult
. Esto permite a los usuarios manipular el valor del código de barras dentro del programa.
El siguiente fragmento de código muestra uno de los casos de uso de la 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
Observando el fragmento de código anterior, hemos creado un programa sencillo que esencialmente transforma múltiples códigos de barras dentro de una imagen en nuevas imágenes separadas de códigos QR. Inicialmente, escaneamos los códigos de barras de la imagen PNG de muestra. Una vez que hemos detectado estos códigos de barras, iteramos a través de ellos, accedemos a la propiedad BinaryValue, y luego la usamos para crear nuevos códigos de barras QR.
Coordenadas del código de barras, altura y anchura
Otra propiedad del objeto BarcodeResult
a la que los usuarios pueden acceder son las coordenadas del código de barras, incluyendo X1, Y1, y X2, Y2, así como su Height y Width dentro de un archivo de imagen o documento. Estas propiedades resultan muy útiles cuando los usuarios necesitan recuperar información sobre la ubicación y las dimensiones del código de barras. Utilicemos una ilustración para destacar la ubicación y las 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

Antes de la redacción

Tras la redacción
El fragmento de código anterior se utiliza para redactar múltiples códigos de barras que se encuentran en un archivo de imagen. Para lograrlo, hemos utilizado una combinación de 2 bibliotecas, que son IronBarcode y IronDrawing. Para obtener el objeto BarcodeResult
y extraer las propiedades de él, primero leemos los códigos de barras disponibles en un archivo de imagen utilizando el método BarcodeReader.Read()
. Al mismo tiempo, el archivo de imagen de entrada también debe convertirse en un objeto AnyBitmap
para usar y aplicar el método de redacción en la imagen. Una vez que tenemos el objeto BarcodeResults
, podemos aplicar un bucle e iterar a través de él para obtener las propiedades X1, Y1, Width, y Height de cada código de barras disponible en la imagen y usarlas como propiedades CropRectangle
en el método AnyBitmap.Redact()
.
Número de página
Los usuarios también pueden recuperar el número de página en el que se encontró el código de barras. Se trata de una función útil para los usuarios que deseen utilizar documentos de varias páginas que contengan varios códigos de barras y necesiten conocer la ubicación de los códigos de barras encontrados en el documento para su posterior procesamiento.
Veamos el siguiente fragmento de código:
: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
El sencillo fragmento de código anterior demuestra un caso de uso en el que los usuarios necesitan que el programa devuelva el valor de los códigos de barras encontrados en un documento PDF de varias páginas, así como sus números de página. El fragmento de código anterior usó el método BarcodeReader.ReadPdf()
para leer los códigos de barras dentro de un documento PDF de varias páginas, lo que devolvió un objeto BarcodeResults
que almacenó cada BarcodeResult
encontrado en el documento. Aplicar bucle e iterar a través de cada elemento del 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 utilizar esta propiedad para depurar si se han podido leer todos los códigos de barras de un documento.
Atención
Rotación del código de barras y orientación de la página
Usando IronBarcode, los usuarios también pueden obtener información sobre la orientación del código de barras así como la orientación de la página donde se encontró el código de barras. Para extraer esta información, los usuarios pueden recuperar de 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. Sin embargo, tenga en cuenta que
Veamos el siguiente fragmento de código:
: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
El sencillo fragmento de código anterior se ejecutó con el archivo PDF de muestra adjunto para demostrar que los usuarios pueden recuperar la orientación de la página y la rotación del código de barras obteniendo el valor de BarcodeResult.PageOrientation
y BarcodeResult.Rotation
respectivamente. Esta función es útil principalmente para fines de depuración.
IronBarcode sólo puede leer códigos de barras en 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 distinto al mencionado. PageOrientation
devolverá un objeto PageOrientation
, que consiste en Portrait o Landscape.
Texto y valor
Por supuesto, la propiedad principal que los usuarios querrán obtener al usar IronBarcode, es conocer su valor y texto. Estas 2 propiedades se utilizan a menudo indistintamente y devolverán el mismo valor. Aparte de eso, los usuarios también pueden usar el método BarcodeResult.ToString()
para lograr el mismo resultado. El siguiente fragmento de código lo 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
A partir del fragmento de código anterior, los usuarios sólo tienen que utilizar unas pocas líneas de código para leer el código de barras en una imagen utilizando IronBarcode. Después de iterar a través de los BarcodeResults
devueltos por el método BarcodeReader.Read()
, mostramos en 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, y no sólo limitadas a la escritura y decodificación de 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.