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, anchura, 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 y a la imagen detectados
- Recuperar las coordenadas x e y del código de barras, así como su altura y anchura.
- Leer el texto y el valor del código de barras
Instalar con NuGet
Install-Package BarCode
Formatos de salida y casos de uso
BarcodeResult
almacena varias propiedades útiles. Estas propiedades se enumeran a continuación:
- imagen de código postal
- tipo de código de barras
ValorBinario
- Coordenadas, altura y anchura
NúmeroDePágina
- código de barras y orientación de página
- Texto y valor
Imagen de código de barras
Una vez que IronBarcode realiza el proceso de lectura sobre una imagen, los códigos de barras encontrados en la imagen serán almacenados en BarcodeResult
como 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. A continuación, creamos una lista AnyBitmap
donde almacenamos la información de la propiedad BarcodeImage. Finalmente, utilizamos esta lista para generar un TIFF multipágina utilizando el método CreateMultiFrameTiff
.
Atención
BarcodeImage
de BarcodeResult
sólo almacena las imágenes de los códigos de barras encontrados durante la lectura y no toda la imagen 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 saber más sobre los tipos de códigos de barras soportados en IronBarcode, los usuarios pueden consultar esto 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
En el fragmento de código anterior, realizamos la lectura del código de barras llamando a BarcodeReader.Read()sobre la imagen de entrada. Devuelve el objeto
BarcodeResultsque almacena todos los
BarcodeResultde la lectura de todos los códigos de barras disponibles en la imagen. A continuación, iteramos a través del objeto
BarcodeResultspara recuperar el
BarcodeResult` y obtener el valor del código de barras y el Tipo de Código de Barras impresos en la consola.
Valor binario
Con IronBarcode, los usuarios también pueden recuperar la matriz de bytes del valor del código de barras recuperando 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 detectados estos códigos de barras, los recorremos, accedemos a la propiedad BinaryValue y la utilizamos 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 Altura y Ancho 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
![Ejemplo de entrada antes de la redacción](/static-assets/barcode/how-to/output-data-formats/multiple-barcodes.png)
Antes de la redacción
![Imagen suprimida](/static-assets/barcode/how-to/output-data-formats/redacted.png)
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 sus propiedades, primero leemos los códigos de barras disponibles en un fichero de imagen utilizando BarcodeReader.Read()
método. Al mismo tiempo, el archivo de imagen de entrada también debe convertirse en un objeto AnyBitmap
para poder utilizar y 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 el X1, Y1, Width, y Height de cada código de barras disponible en la imagen y utilizarlos como propiedades CropRectangle
en el AnyBitmap.Redact()
método.
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 utiliza BarcodeReader.ReadPdf()para leer los códigos de barras dentro de un documento PDF multipágina, que devuelve un objeto
BarcodeResultsque almacena todos los
BarcodeResult` encontrados 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
Con IronBarcode, los usuarios también pueden recuperar información sobre la orientación del código de barras, así como sobre la orientación de la página en la que se encontró el código de barras. Para extraer estas dos informaciones, los usuarios pueden recuperar las propiedades Rotation
y PageOrientation
del objeto BarcodeResult
. Rotation
devolverá un número 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 la entrada PDF de ejemplo adjunta 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.
Atención
PageOrientation
devolverá un valor orientación de la página objeto, que consisten en Retrato o Paisaje.Texto y valor
Por supuesto, la principal propiedad que los usuarios querrán recuperar cuando utilicen IronBarcode, es conocer su valor y texto. Estas 2 propiedades se utilizan a menudo indistintamente y devolverán el mismo valor. Además, los usuarios también pueden utilizar 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 por los BarcodeResults
devueltos por BarcodeReader.Read()mostramos en la consola el resultado de obtener las propiedades value y text, así como de llamar a
BarcodeResult.ToString()` para demostrar que todos ellos devuelven 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 soportados, los usuarios pueden hacer mucho más con el objeto BarcodeResult
devuelto por IronBarcode.