How to Output Data Formats in C# with IronBarcode
IronBarcode provides multiple output formats from barcode reads including BarcodeImage, BarcodeType, BinaryValue, coordinates, dimensions, page numbers, orientation, text and value properties. These formats enable processing barcode data programmatically for various use cases.
Instead of simply reading the barcode and printing values in the console, IronBarcode offers much more. It provides several output formats that pave the way for users to process 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 use cases where they can be helpful.
Quickstart: Read Barcode Value and Type in One Line
This example shows how to read a barcode from an image using IronBarcode – one line to load, then immediately print the barcode's value and type. Perfect for getting started fast. For more comprehensive examples, check out the Barcode Quickstart guide.
Get started making PDFs with NuGet now:
Install IronBarcode with NuGet Package Manager
Copy and run this code snippet.
var result = IronBarCode.BarcodeReader.Read("input.png"); Console.WriteLine($"Value: {result[0].Value}, Type: {result[0].BarcodeType}");Deploy to test on your live environment
Minimal Workflow (5 steps)
- Download the C# library for reading barcodes
- Prepare the PDF and image for barcode detection
- Access the detected barcode type and image
- Retrieve the barcode's x and y coordinates, as well as its height and width
- Read the barcode's text and value
What Are the Available Output Formats and Their Use Cases?
BarcodeResult stores various useful properties. These properties are listed below:
BarcodeImageBarcodeTypeBinaryValue- Coordinates, Height & Width
PageNumberBarcodeandPageOrientation- Text & Value
Each property serves specific purposes in barcode processing workflows. Whether building an inventory management system, document processing pipeline, or quality control application, these data formats provide the flexibility needed for reading barcodes from various sources.
How Can I Extract and Save Barcode Images?
Once IronBarcode reads an image, the barcodes found in the image are stored in BarcodeResult as the BarcodeImage property of type AnyBitmap. The BarcodeImage property stores the found barcode images. Users can retrieve this object to process the image further or save it as a permanent copy. This provides efficiency and ease of use by eliminating additional code to extract barcode images from an image.
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.csusing 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")The code snippet above illustrates one use case for this output format. Specifically, it creates 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 use this list to generate a multi-page TIFF using the CreateMultiFrameTiff method. This technique is particularly useful when processing multipage GIF and TIFF files.
BarcodeImage property from BarcodeResult only stores the images of barcodes found during the read, not the whole input image itself.How Do I Identify Different Barcode Types Programmatically?
This property helps determine what type of barcode is present in the input image or document. However, the limitation is that the barcode type inside the image must be supported and readable by IronBarcode. To know more about supported barcode types in IronBarcode, refer to this article. Additionally, explore the full list of supported barcode formats to ensure compatibility with your specific requirements.
The code snippet below demonstrates how to retrieve barcode values and barcode type in an image by printing the values to console.
:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeType.csusing 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 barcodeFrom 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. This approach works seamlessly with various barcode types, including specialized formats like Code 39 barcodes.
When Should I Use Binary Value Output?
Using IronBarcode, users can 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. Binary value output is particularly useful when working with encrypted data, file attachments encoded in barcodes, or when integrating with systems that require byte-level data processing.
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.csusing 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 barcodeObserving 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 use it to create new binary files. This technique is especially valuable when you need to read multiple barcodes and process their binary data individually.
How Can I Access Barcode Location and Dimensions?
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 are useful when users need to retrieve information about the barcode's location and dimensions. This spatial information is crucial for applications that require precise positioning, such as automated document processing, quality control systems, or when implementing crop regions for optimized barcode scanning.
Let's demonstrate the barcode's location and dimensions.
:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-height-width.csusing 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
Before redaction

After redaction
The code snippet above redacts 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 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.
Why Is Page Number Important for Multi-Page Documents?
Users can retrieve the page number at which the barcode was found. This is a helpful feature for users who use a multipage document that contains multiple barcodes and need to know the location of the barcodes found in the document for further processing. This functionality is essential when reading barcodes from PDF documents or processing batch documents in enterprise applications.
Look at the code snippet below:
:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-page-number.csusing 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 barcodeThe 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 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 use this property to debug if all barcodes in a document were read.
How Do I Detect Barcode Rotation and Page Orientation?
Using IronBarcode, users can retrieve information on the barcode orientation and page orientation where the barcode was found. To extract these two pieces of information, access the Rotation and PageOrientation properties from the BarcodeResult object. Rotation returns an integer that represents the angle of rotation of the barcode found. This feature works in conjunction with image orientation correction capabilities to ensure accurate barcode reading regardless of scan angle.
Look at the code snippet below:
:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-orientation.csusing 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 barcodeThe 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.
0, 90, 180, and 270 degrees. IronBarcode will not return any value if the barcode has a rotation value other than those mentioned. PageOrientation returns a PageOrientation object, which consists of Portrait or Landscape.What’s the Difference Between Text and Value Properties?
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 return the same value. Apart from that, users can use the BarcodeResult.ToString() method to achieve the same result. When working with specialized applications or exporting barcode data as streams, these properties provide flexible ways to access the barcode content in your preferred format.
The code snippet below demonstrates:
:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-text-value.csusing 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 barcodeFrom the code snippet above, users only need 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 return 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 much more with the BarcodeResult object returned by IronBarcode.
Frequently Asked Questions
What output formats does C# barcode reading support?
IronBarcode provides multiple output formats including BarcodeImage, BarcodeType, BinaryValue, coordinates, dimensions, page numbers, orientation, text and value properties. These formats enable comprehensive processing of barcode data for various .NET applications.
How can I read a barcode value in just one line of code?
With IronBarcode, you can read a barcode in one line using: var result = IronBarCode.BarcodeReader.Read('input.png'); This immediately gives you access to the barcode's value and type through result[0].Value and result[0].BarcodeType.
What properties are available in BarcodeResult?
The BarcodeResult object in IronBarcode contains properties including BarcodeImage, BarcodeType, BinaryValue, Coordinates, Height & Width, PageNumber, Barcode, PageOrientation, Text and Value - providing comprehensive data for barcode processing workflows.
Can I extract and save barcode images after reading?
Yes, IronBarcode stores found barcodes as AnyBitmap objects in the BarcodeImage property. You can retrieve this object to process the image further or save it as a permanent copy, eliminating the need for additional code to extract barcode images.
How do I access barcode coordinates and dimensions?
IronBarcode provides coordinate data including x and y positions as well as height and width dimensions for each detected barcode. These properties are accessible through the BarcodeResult object for precise barcode location tracking.
What's the difference between Text and Value properties?
In IronBarcode, both Text and Value properties contain the barcode's data content. These properties are part of the BarcodeResult object and can be used interchangeably to retrieve the decoded barcode information.
Can I determine which page a barcode was found on?
Yes, IronBarcode includes a PageNumber property in the BarcodeResult object, allowing you to identify exactly which page of a multi-page document or PDF contained each detected barcode.
How can I identify the type of barcode detected?
The BarcodeType property in IronBarcode's BarcodeResult object identifies the specific barcode format detected (such as QR Code, Code 128, etc.), enabling format-specific processing in your application.






