How to Set a Barcode Crop Region in C#

如何在 C# 中定义条码裁剪区域以加快读取速度

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

通过使用IronSoftware.Drawing.Rectangle定义裁剪区域,可以将IronBarcode的扫描区域限制在特定图像区域,从而显著提高条码读取性能并通过仅专注于相关区域来减少错误。

IronBarcode 最重要的功能之一是指定 裁剪区域。 此功能使IronBarcode能够仅读取图像中由IronSoftware.Drawing.Rectangle对象。 使用这一功能不仅能减少阅读错误,还能提高阅读效果。 在处理多页文档或条形码位置可预测的高分辨率图像时,这种技术尤其有价值。

在处理具有多个条形码或复杂背景的图像时,定义裁剪区域对于优化条形码读取速度至关重要。 通过限制扫描区域,可以实现比扫描整个图像快 5 倍的处理速度,同时还能减少非条形码元素带来的误报。

快速入门:定义和应用裁剪区域以更快地读取条形码

只需几秒钟即可创建裁剪矩形并将其导入 IronBarcode——无需额外设置,操作便捷。 看看使用BarcodeReaderOptions限制扫描到特定图像区域有多容易。

  1. 使用 NuGet 包管理器安装 https://www.nuget.org/packages/BarCode

    PM > Install-Package BarCode
  2. 复制并运行这段代码。

    var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { CropArea = new IronSoftware.Drawing.Rectangle(x: 50, y: 100, width: 300, height: 150) });
  3. 部署到您的生产环境中进行测试

    通过免费试用立即在您的项目中开始使用IronBarcode

    arrow pointer

如何查找图像中的裁剪区域坐标和尺寸?

有很多方法可以找到图像中某一点的坐标。 一种方法是使用计算机上的 "画图 "应用程序加载图片。 要获得裁剪区域的第一个坐标,请将光标移动到首选的第一个位置,该位置将是Rectangle的左上角,并获取屏幕左下方应用提供的x,y坐标。 然后,定位第二个点,它将是Rectangle的右下角。 请参考下图以便更清楚地理解。

对于更高级的情况,您还可以考虑使用 GIMP 或 Photoshop 等图像编辑软件,它们提供了精确的像素坐标和测量工具。 有些开发人员喜欢使用在线坐标查找工具或创建简单的 HTML/JavaScript 实用程序,在图像悬停时显示鼠标坐标。

裁剪区域图,显示带有角坐标 (x1,y1) 和 (x2,y2) 的矩形区域及尺寸计算

我可以使用哪些工具来确定坐标?

然后可以将坐标值用作Rectangle对象的属性。 对象的width可以定义为x2 - x1,而height可以定义为y2 - y1。 在处理条形码图像时,必须了解坐标是从左上角(0,0)开始,并随着向右(x 轴)和向下(y 轴)移动而增加。

确定坐标的几种方法包括

  • 内置操作系统工具:Windows 画图,macOS 预览版
  • 浏览器开发工具:检查网络图像上的元素
  • 专业软件:Adobe Photoshop、GIMP
  • 自定义实用程序:简单坐标查看器应用程序
  • IronBarcode的调试功能:导出带坐标叠加的已处理图像

如何根据坐标计算矩形尺寸?

有了两个角点后,计算尺寸就变得简单了。 矩形需要四个参数:x 坐标、y 坐标、宽度和高度。 以下是如何正确实例化作物区域:

:path=/static-assets/barcode/content-code-examples/how-to/set-crop-region-instantiate-CropRegion.cs
using IronBarCode;

int x1 = 62;
int y1 = 29;
int x2 = 345;
int y2 = 522;

IronSoftware.Drawing.Rectangle crop1 = new IronSoftware.Drawing.Rectangle(x: x1, y: y1, width: x2-x1, height: y2-y1);
Imports IronBarCode

Private x1 As Integer = 62
Private y1 As Integer = 29
Private x2 As Integer = 345
Private y2 As Integer = 522

Private crop1 As New IronSoftware.Drawing.Rectangle(x:= x1, y:= y1, width:= x2-x1, height:= y2-y1)
$vbLabelText   $csharpLabel

该坐标系统可与 IronBarcode 的 图像校正功能无缝配合,让您仅对图像的特定区域应用滤镜。

如何应用 CropRegion 和读取 BarCode?

一旦定义了您希望IronBarcode读取的BarcodeReaderOptions,以及其他设置。 然后可以将其用作BarcodeReader.Read()方法中的一个参数。 以下代码片段展示了这一过程:

BarcodeReaderOptions 接受哪些参数?

BarcodeReaderOptions类提供了对条码读取过程的全面控制。 除作物区域外,您还可以配置:

  • 速度优化:使用速度设置在准确性和性能之间取得平衡
  • 条形码类型:指定要搜索的准确格式(支持的格式)
  • 图像过滤器:对倾斜或损坏的 BarCode 进行修正
  • 多线程:启用并行处理以提高性能
  • 旋转处理:自动检测旋转的 BarCode

如何处理来自裁剪区域的多个条形码结果?

在扫描包含多个条码的裁剪区域时,IronBarcode 会返回一个结果集合。 每个结果都包含有价值的元数据,包括作物区域内的确切位置、条形码类型和解码值。 以下是如何实现全面的作物区域处理:

:path=/static-assets/barcode/content-code-examples/how-to/set-crop-region-apply-CropRegion.cs
using IronBarCode;
using System;

int x1 = 62;
int y1 = 29;
int x2 = 345;
int y2 = 522;

IronSoftware.Drawing.Rectangle crop1 = new IronSoftware.Drawing.Rectangle(x: x1, y: y1, width: x2 - x1, height: y2 - y1);

BarcodeReaderOptions options = new BarcodeReaderOptions()
{
    CropArea = crop1
};

var result = BarcodeReader.Read("sample.png", options);
foreach (var item in result)
{
    Console.WriteLine(item.Value);
}
Imports IronBarCode
Imports System

Private x1 As Integer = 62
Private y1 As Integer = 29
Private x2 As Integer = 345
Private y2 As Integer = 522

Private crop1 As New IronSoftware.Drawing.Rectangle(x:= x1, y:= y1, width:= x2 - x1, height:= y2 - y1)

Private options As New BarcodeReaderOptions() With {.CropArea = crop1}

Private result = BarcodeReader.Read("sample.png", options)
For Each item In result
	Console.WriteLine(item.Value)
Next item
$vbLabelText   $csharpLabel

从上面的代码片段中,我们在CropArea属性。 然后我们使用这个CropArea应用于图像并读取其中的条码。

高级作物区域技术

对于生产应用,可以考虑这些高级策略:

1.动态裁剪区域:根据文档模板或 OCR 结果计算裁剪区域 2.多个区域:在单个图像中处理多个裁剪区域,实现复杂布局 3.性能优化:将裁剪区域与 async 处理相结合,实现最大吞吐量 4.错误处理:在预期区域未找到条形码时实施后备策略

在处理 PDF 文档时,您可以对特定页面应用裁剪区域,从而大幅缩短大文件的处理时间。 这对于发票、运输标签或条形码位置标准化的表格尤其有用。

作物区域定义的最佳实践

最大限度地提高作物区域的效率:

  • 添加衬垫:在预期条形码位置周围加入 10-20 个像素,以考虑到细微的差异
  • 彻底测试:验证裁剪区域在整个文档集中的工作情况
  • 文档坐标:为您的应用程序维护一份常见作物区域参考表
  • 考虑缩放:考虑不同的图像分辨率或 DPI 设置
  • 监控性能:跟踪处理时间以验证作物区域的有效性

对于需要容错的应用程序,应采用两步法:首先扫描裁剪区域,如果在预期区域内未发现条形码,则退回到全图扫描。

结论

定义裁剪区域是优化 .NET 应用程序中条形码读取性能的一项强大技术。 通过将扫描区域限制在特定区域,可以显著提高速度,同时减少误报。 无论您是处理 单个图像还是批量操作,裁剪区域都能提供生产环境所需的精度和性能。

常见问题解答

什么是 BarCode 裁剪区域,为什么要使用它?

条码裁剪区域是 IronBarcode 在图像中集中扫描的特定区域。通过使用 IronSoftware.Drawing.Rectangle 定义裁剪区域,您可以将条码读取速度提高 5 倍,同时通过将扫描限制在图像的相关区域来减少错误。

如何为条形码读取定义裁剪区域?

您可以在 IronBarcode 中定义裁剪区域,方法是创建一个具有特定坐标(x、y)和尺寸(宽、高)的 IronSoftware.Drawing.Rectangle 对象,然后在调用读取方法时将其传递给 BarcodeReaderOptions.CropArea 属性。

使用裁剪区域能带来哪些性能提升?

与扫描整个图像相比,IronBarcode 的裁剪区域功能可将条码读取性能提高 5 倍。这在处理多页文档或条码位置可预测的高分辨率图像时尤为有益。

如何找到我所在作物区域的正确坐标?

您可以使用 Microsoft Paint、GIMP 或 Photoshop 等图像编辑软件查找裁剪区域坐标。只需打开图像,将光标移动到所需区域的左上角,记下 x、y 坐标,然后找到右下角坐标,即可确定 IronBarcode 中矩形的宽度和高度。

何时使用作物区域特别有益?

IronBarcode 中的裁剪区域在处理具有多个条码的图像、复杂背景、多页文档或条码位置一致且可预测的高分辨率图像时尤为重要。

在条形码操作中使用IronBarcode的好处是什么?

IronBarcode提供了易于集成、对多种条形码格式的支持、高质量的图像生成和强大的读取能力等好处,使其成为C#条形码操作的综合工具。

IronBarcode是否提供支持自定义条形码外观的功能?

是的,IronBarcode为条形码外观提供广泛的自定义选项,包括颜色、大小和文本注释,允许运您将条形码设计成符合您特定的设计要求。

IronBarcode如何帮助提高业务流程的效率?

IronBarcode通过快速准确的条码生成和读取提高了业务流程效率,减少了手动数据输入错误,并改善了库存和资产跟踪。

在项目中实现IronBarcode需要哪些编程技能?

了解C#编程的基础知识就足以在项目中实现IronBarcode,因为它提供了简单的方法和全面的文档来指导开发人员。

IronBarcode适合小项目和大型企业应用吗?

IronBarcode被设计为可扩展且多功能,适合需要强大条码解决方案的小项目和大型企业应用。

Hairil Hasyimi Bin Omar
软件工程师
如所有伟大的工程师一般,Hairil 是个热心的学习者。他正在提高对 C#、Python 和 Java 的知识,并利用这些知识为 Iron Software 团队成员增值。Hairil 从马来西亚的玛拉工业大学加入 Iron Software 团队,获得化学与工艺工程学士学位。
准备开始了吗?
Nuget 下载 2,317,217 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package BarCode
运行示例 观看您的字符串变成 BarCode。