如何输出数据格式
除了简单地读取条形码并在控制台中打印值之外,IronBarcode还提供了更多功能。 它提供了多种输出格式,为用户进一步处理读取结果铺平了道路。 这些格式包括条形码图像、条形码类型、BinaryValue
、坐标、高度、宽度、页码、条形码、页面方向、文本和值等属性。
用户可以在程序中进一步操作这些属性。 让我们探讨如何使用这些属性以及它们有用的应用场景。
如何输出数据格式
- 下载用于读取条形码的 C# 库
- 为条形码检测准备 PDF 和图像
- 访问检测到的条形码类型和图像
- 读取条形码的 x 坐标和 y 坐标,以及高度和宽度
- 读取条形码的文本和值
开始使用 IronBarcode
立即在您的项目中开始使用IronBarcode,并享受免费试用。
输出格式和使用案例
BarcodeResult
存储了多种有用的属性。 以下是这些属性列表:
条形码图像
条形码类型
二进制值
- 坐标,高度和宽度
页码
- 条形码和页面方向
- 文本与值
条形码图像
一旦IronBarcode在图像上执行读取过程,图像中发现的条形码将作为类型为AnyBitmap
的BarcodeImage
属性存储在BarcodeResult
中。 BarcodeImage
属性存储找到的条形码图像。 用户可以检索此对象以进一步处理图像或将其保存为永久副本。 这通过消除编写额外代码以从图像中提取条形码图像的需要,提供了一种高效且易于使用的方式。
让我们看一下下面的代码片段,它演示了这种输出格式的一个可能用例。
: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")
上面的代码片段展示了这种输出格式的一个用例。 它专门设计用于从PDF文档中检测到的条形码创建多页TIFF图像。 首先,我们在样本PDF中扫描或检测条形码。 然后,我们创建一个 AnyBitmap
列表,在其中存储来自 BarcodeImage 属性的信息。 最后,我们使用这个列表通过CreateMultiFrameTiff
方法生成多页TIFF。
请注意
条形码类型
此属性帮助用户确定输入图像或文档中存在的条码类型。 然而,此功能的限制在于图像内的条形码类型必须是IronBarcode支持并能读取的。 要了解 IronBarcode 支持的条形码类型,请参考此处 条.
以下代码片段演示了用户如何通过在控制台打印值来检索图像中的条形码值以及条形码类型。
: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
从上面的代码片段中,我们通过调用 BarcodeReader.Read 读取条形码()对输入图像使用方法。 此操作返回一个
BarcodeResults对象,它存储了图像中所有可用条形码的
BarcodeResult。 接下来,我们遍历
BarcodeResults对象以检索
BarcodeResult` 并获取条码值和条码类型,打印到控制台上。
二进制值
使用IronBarcode,用户还可以通过从BarcodeResult
对象检索BinaryValue
属性来获取条码值的字节数组。 这使用户能在程序内进一步操作条码值。
以下代码片段演示了一种使用案例,即检索条形码值作为二进制数据。
: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
观察上述代码片段,我们创建了一个简单的程序,基本上将图像中的多个条形码转换成单独的新的二维码图像。 最初,我们扫描示例 PNG 图像中的条形码。 一旦我们检测到这些条形码,我们将遍历它们,访问 BinaryValue 属性,然后使用它来创建新的QR码条形码。
条形码坐标、高度与宽度
另一个用户可以访问的 BarcodeResult
对象属性是条形码的坐标,包括 X1、Y1 和 X2、Y2,以及其在图像文件或文档中的 Height(高度)和 Width(宽度)。 这些属性在用户需要检索有关条形码位置和尺寸的信息时非常有用。 让我们用一个例子来突出显示条形码的位置和尺寸。
: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
编辑前
编辑后
上述代码段用于在图像文件中删除多个条形码。为此,我们使用了两个库的组合,即IronBarcode和IronDrawing。 要获取 BarcodeResult
对象并从中提取属性,我们首先使用 BarcodeReader.Read
读取图像文件中可用的条形码。()方法。 同时,输入图像文件还需要转换成AnyBitmap
对象,以便使用并应用图像的编辑方法。 一旦我们获得了BarcodeResults
对象,我们可以应用循环并遍历它,以获取图像中每个条形码的X1、Y1、宽度和高度,并将它们用作AnyBitmap.Redact
的CropRectangle
属性。()方法。
页码
用户还可以检索找到条形码的页面号码。 这是一个对用户非常有帮助的功能,适用于需要使用包含多个条形码的多页文件,并且需要知道文档中找到的条形码位置以便进一步处理的用户。
让我们来看看下面的代码片段:
: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
上面的简单代码段展示了一个用例,即用户需要程序返回在多页PDF文档中找到的条形码的值及其页码。 代码片段使用了 BarcodeReader.ReadPdf
()该方法用于读取多页 PDF 文档中的条形码,它返回一个 BarcodeResults
对象,该对象存储了文档中发现的每一个 BarcodeResult
。 在对象中应用循环,并迭代每个项目以检索条形码的值和找到条形码的页面编号。 除了此用例之外,用户还可以使用此属性来调试文档中的所有条形码是否都能被读取。
请注意
条形码旋转和页面方向
使用IronBarcode,用户还能获取条形码方向以及发现条形码的页面方向的信息。 要提取这两个信息,用户可以从BarcodeResult
对象的Rotation
和PageOrientation
属性中检索。 Rotation
将返回一个整数,代表找到的条形码的旋转角度。 但请注意,
让我们来看看下面的代码片段:
: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
上述简单代码片段是用附带的样本 PDF 输入运行的,以证明用户可以通过获取 BarcodeResult.PageOrientation
和 BarcodeResult.Rotation
的值来检索页面方向和条码旋转。 此功能主要用于调试目的。
请注意
PageOrientation
将返回页面方向
对象,其中包括肖像或风景。文本和值
当然,用户在使用IronBarcode时,主要想要检索的属性是它的值和文本。 这两个属性通常可以互换使用,并且会返回相同的值。 除此之外,用户还可以使用 BarcodeResult.ToString
()` 方法以达到同样的结果。 以下代码片段演示:
: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
从上面的代码片段中可以看出,用户只需使用几行代码就可以使用IronBarcode在图像中读取条形码。 在遍历 BarcodeReader.Read
返回的 BarcodeResults
之后()方法,我们会将获取值和文本属性的结果输出到控制台,并调用 `BarcodeResult.ToString()方法来证明所有这些返回的值是相同的。
简而言之,IronBarcode 是一个理想的 API,用户可以通过它执行多项关于条形码的操作,不仅限于编写和解码条形码。 支持多种输出数据格式,用户可以通过 IronBarcode 返回的 BarcodeResult
对象做更多事情。