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

How to Output Data Formats

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

Instead of simply reading the barcode and printing the values in the console, IronBarcode offers much more. It provides several output formats that pave the way for users to further process the read results. These formats include properties such as barcode image, barcode type, BinaryValue, coordinates, height, width, page number, barcode, page orientation, text, and value.

Users can manipulate these properties further within the program. Let's explore how to use these properties and the use cases where they can be helpful.

Quickstart: Read Barcode Value and Type in One Line

This example shows how easy it is to read a barcode from an image using IronBarcode – just one line to load, then immediately print the barcode’s value and type. It’s perfect for getting started fast.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. Copy and run this code snippet.

    var result = IronBarCode.BarcodeReader.Read("input.png");
    Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");
  3. Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer

Output Formats and Use Cases

BarcodeResult stores various useful properties. These properties are listed below:

  • BarcodeImage
  • BarcodeType
  • BinaryValue
  • Coordinates, Height & Width
  • PageNumber
  • Barcode and PageOrientation
  • Text & Value

Barcode Image

Once IronBarcode performs a reading process on an image, the barcodes found in the image will be stored in BarcodeResult as the BarcodeImage property of type AnyBitmap. The BarcodeImage property stores the found barcode images. Users can retrieve this object to further process the image or save it as a permanent copy. This provides efficient and ease of use by eliminating the need to write additional code to extract the barcode images from an image.

Let us look at the code snippet below that demonstrates a possible use case for this output format:

: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

The code snippet above illustrates one of the use cases for this output format. Specifically, it's designed to create a multipage TIFF image from barcodes detected within a PDF document. First, we scan or detect barcodes in the sample PDF. Then, we create a list of AnyBitmap where we store the information from the BarcodeImage property. Finally, we utilize this list to generate a multi-page TIFF using the CreateMultiFrameTiff method.

Por favor notaBarcodeImage property from BarcodeResult only stores the images of barcodes found during the read, not the whole input image itself.

Barcode Type

This property helps users in determining what type of barcode is present in the input image or document. However, the limitation of this feature is that the barcode type inside the image must be those that are supported and can be read by IronBarcode. To know more about supported barcode types in IronBarcode, users can refer to this article.

The code snippet below demonstrates how users can retrieve the barcode values as well as the barcode type in an image by printing the values on console.

: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

From the code snippet above, we perform barcode reading by calling BarcodeReader.Read() method on the input image. This returns a BarcodeResults object that stores all the BarcodeResult from reading all barcodes available in the image. Next, we iterate through the BarcodeResults object to retrieve the BarcodeResult and get the barcode value and type printed to the console.

Binary Value

Using IronBarcode, users can also retrieve the byte array of the barcode value by accessing the BinaryValue property from the BarcodeResult object. This allows users to manipulate the barcode value further inside the program.

The code snippet below demonstrates one use case of retrieving the barcode value as binary data:

: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

Observing the code snippet above, we've created a straightforward program that transforms multiple barcodes within an image into separate new binary-encoded files. Initially, we scan the barcodes in the sample PNG image. Once we've detected these barcodes, we iterate through them, access the BinaryValue property, and then use it to create new binary files.

Barcode Coordinates, Height & Width

Another property of the BarcodeResult object that users can access is the barcode's coordinates, including X1, Y1, and X2, Y2, as well as its Height and Width within an image file or document. These properties prove to be very useful when users need to retrieve information about the barcode's location and dimensions.

Let's use an illustration to highlight the barcode's location and dimensions.

: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

The code snippet above is used to redact multiple barcodes found in an image file. To achieve this, we use a combination of two libraries, IronBarcode and IronDrawing. To get the BarcodeResult object and extract the properties from it, we first read the barcodes available in an image file using the BarcodeReader.Read() method. Concurrently, the input image file also needs to be converted into an AnyBitmap object to apply the redaction method to the image. Once we have the BarcodeResults object, we can apply a loop and iterate through it to get the X1, Y1, Width, and Height of every barcode available in the image and use them in the CropRectangle properties of the AnyBitmap.Redact() method.

Page Number

Users can also retrieve the page number at which the barcode was found. This is a helpful feature for users who seek to use a multipage document that contains multiple barcodes and need to know the location of the barcodes found in the document for further processing.

Let's look at the code snippet below:

: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

The simple code snippet above demonstrates one use case where users need the program to return the value of barcodes found in a multipage PDF document and their respective page numbers. The code snippet above uses the BarcodeReader.ReadPdf() method to read the barcodes inside a multipage PDF document, which returns BarcodeResults object storing every BarcodeResult found in the document. We apply a loop and iterate through each item in the object to retrieve the value of the barcodes and the page number where the barcodes were found. Apart from this use case, users can also use this property to debug if all barcodes in a document were able to be read.

Por favor notaThe value returned from this property is 1-Based, meaning the first page is always one and not zero

Barcode rotation and Page Orientation

Using IronBarcode, users can also retrieve information on the barcode orientation and page orientation where the barcode was found. To extract these two pieces of information, users can access the Rotation and PageOrientation properties from the BarcodeResult object. Rotation will return an integer that represents the angle of rotation of the barcode found.

Let's look at the code snippet below:

: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

The simple code snippet above was run with the sample PDF input attached to prove that users can retrieve the page orientation and barcode rotation by getting the value of BarcodeResult.PageOrientation and BarcodeResult.Rotation, respectively. This feature is useful mainly for debugging purposes.

Por favor notaIronBarcode can only read barcodes with rotations of 0, 90, 180, and 270 degrees. IronBarcode will not return any value if the barcode has a rotation value other than those mentioned. PageOrientation will return a PageOrientation object, which consists of Portrait or Landscape.

Text and Value

Of course, the main property that users will want to retrieve when using IronBarcode is its value and text. These two properties are often used interchangeably and will return the same value. Apart from that, users can also use the BarcodeResult.ToString() method to achieve the same result. The code snippet below demonstrates:

: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

From the code snippet above, users only need to use a few lines of code to read barcodes in an image using IronBarcode. After iterating through the BarcodeResults returned by the BarcodeReader.Read() method, we output to the console the result of getting the value and text properties, as well as calling the BarcodeResult.ToString() method to show that all these returned the same value.

In a nutshell, IronBarcode is a perfect API for users to perform multiple operations regarding barcodes, not limited to writing and decoding barcodes. With various output data formats supported, users can do so much more with the BarcodeResult object returned by 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,935,276 | Versión: 2025.11 recién lanzado