如何输出数据格式

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

海瑞尔 哈西米 本 奥马尔

IronBarcode 不只是简单地读取条形码并在控制台中打印数值,它还提供了更多的功能。它提供多种输出格式,为用户进一步处理读取结果铺平了道路。这些格式包括条形码图像、条形码类型、BinaryValue、坐标、高度、宽度、页码、条形码、页面方向、文本和值等属性。

用户可以在程序中进一步操作这些属性。让我们来探讨一下如何使用这些属性,以及在哪些用例中这些属性会有所帮助。

适用于的C# NuGet库

安装使用 NuGet

Install-Package BarCode
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于的C# NuGet库

安装使用 NuGet

Install-Package BarCode
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

开始在您的项目中使用IronPDF,并立即获取免费试用。

第一步:
green arrow pointer

查看 IronBarcodeNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变。

适用于的C# NuGet库 nuget.org/packages/BarCode/
Install-Package BarCode

考虑安装 IronBarcode DLL 直接。下载并手动安装到您的项目或GAC表单中: IronBarCode.zip

手动安装到你的项目中

下载DLL

输出格式和使用案例

条码结果 "存储了各种有用的属性。这些属性如下:

  • 条码图像
  • 条码类型
  • 二进制值
  • 坐标、高度和宽度
  • 页码
  • 条形码 "和 "页面方向

  • 文本和值

条形码图像

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")
VB   C#

上面的代码片段说明了这种输出格式的一种使用情况。具体来说,它的目的是根据 PDF 文档中检测到的条形码创建多页 TIFF 图像。首先,我们扫描或检测样本 PDF 中的条形码。然后,我们创建一个 AnyBitmap 列表,并在其中存储来自 BarcodeImage 属性的信息。最后,我们利用该列表,使用 CreateMultiFrameTiff 方法生成多页 TIFF。

请注意
条码结果 "中的 "BarcodeImage "属性只存储读取过程中找到的**条码的图像,而不是整个输入图像本身。

条形码类型

此属性可帮助用户确定输入图像或文档中的条形码类型。然而,此功能的局限性在于图像中的条形码类型必须是 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
VB   C#

从上面的代码片段中,我们通过调用 BarcodeReader.Read 读取条形码()方法。这将返回BarcodeResults对象,其中存储了读取图像中所有可用条码后得到的所有BarcodeResults。接下来,我们遍历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
VB   C#

通过观察上面的代码片段,我们创建了一个简单明了的程序,该程序基本上可以将图像中的多个条形码转换成独立的新 QR 码图像。首先,我们扫描样本 PNG 图像中的条形码。检测到这些条形码后,我们遍历它们,访问 BinaryValue 属性,然后使用它创建新的 QR 码条形码。

条形码坐标、高度和宽度

用户可以访问的BarcodeResult对象的另一个属性是条形码的坐标,包括X1, Y1, 和 X2, Y2,以及在图像文件或文档中的高度宽度。当用户需要检索有关条形码位置和尺寸的信息时,这些属性被证明是非常有用的。让我们用一个插图来强调条形码的位置和尺寸。

: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
VB   C#
编辑前的输入样本
未经编辑的图片

上面的代码片段用于编辑图像文件中的多个条形码。为此,我们结合使用了 IronBarcode 和 IronDrawing 这两个库。为了获取 BarcodeResult 对象并从中提取属性,我们首先使用 BarcodeReader.Read 读取图像文件中的条形码。()方法。同时,还需要将输入的图像文件转换为 AnyBitmap 对象,以便在图像上使用和应用节录方法。获得 BarcodeResults 对象后,我们可以应用循环并遍历它,以获得图像中每个条形码的 X1Y1WidthHeight,并将它们用作 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
VB   C#

上面的简单代码片段演示了一个用例,用户需要程序返回在多页 PDF 文档中找到的条形码值及其页码。上面的代码片段使用了 BarcodeReader.ReadPdf()方法读取多页 PDF 文档中的条形码,返回的BarcodeResults对象存储了文档中找到的每一个BarcodeResults`。应用循环并遍历对象中的每个项目,以检索条形码的值和找到条形码的页码。除此用例之外,用户还可以使用此属性来调试是否能够读取文档中的所有条形码。

请注意
该属性返回的值是1-Based,即第一页始终是1,而不是 0**

条形码旋转和页面方向

使用 IronBarcode,用户还可以检索条码的方向以及找到条码的页面方向。要提取这两个信息,用户可以从 BarcodeResult 对象的 RotationPageOrientation 属性中获取。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
VB   C#

上面的简单代码片段与所附的 PDF 输入示例一起运行,以证明用户可以通过分别获取 BarcodeResult.PageOrientationBarcodeResult.Rotation 的值来检索页面方向和条形码旋转。此功能主要用于调试目的。

[{i:(IronBarcode 只能读取旋转0、90、180 和 270 度的条形码。如果条形码的旋转值与上述值不同,IronBarcode 将不返回任何值。页面方向 "将返回一个"页面方向 对象,其中包括肖像风景。)}]

文本和价值

当然,用户在使用 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
VB   C#

从上面的代码片段来看,用户只需使用几行代码即可使用 IronBarcode 读取图像中的条形码。在遍历BarcodeReader.Read'返回的BarcodeResults'之后()方法,我们会将获取值和文本属性的结果输出到控制台,并调用 `BarcodeResult.ToString()方法来显示所有这些返回值都是相同的。

简而言之,IronBarcode 是一个完美的应用程序接口,用户可以通过它对条形码进行多种操作,而不仅仅局限于条形码的写入和解码。IronBarcode 支持多种输出数据格式,用户可以使用 IronBarcode 返回的 "BarcodeResult "对象进行更多操作。

海瑞尔 哈西米 本 奥马尔

软件工程师

像所有优秀的工程师一样,Hairil 是一个热衷学习的人。他正在精进自己的 C#、Python 和 Java 知识,并利用这些知识为 Iron Software 团队成员增添价值。Hairil 毕业于马来西亚的马来西亚工艺大学(Universiti Teknologi MARA),获得了化学与工艺工程学士学位,然后加入了 Iron Software 团队。