如何在 C# 中定义条码裁剪区域以加快读取速度
使用 IronSoftware.Drawing.Rectangle 定义裁剪区域,将 IronBarcode 的扫描区域限制在特定的图像区域,通过仅关注相关区域,显著提高条形码读取性能并减少错误。
IronBarcode 最重要的功能之一是指定 裁剪区域。 此功能使IronBarcode能够使用 IronSoftware.Drawing.Rectangle 对象,仅读取图像中由裁剪区域指定的特定条形码或区域。 使用这一功能不仅能减少阅读错误,还能提高阅读效果。 在处理多页文档或条形码位置可预测的高分辨率图像时,这种技术尤其有价值。
在处理具有多个条形码或复杂背景的图像时,定义裁剪区域对于优化条形码读取速度至关重要。 通过限制扫描区域,可以实现比扫描整个图像快 5 倍的处理速度,同时还能减少非条形码元素带来的误报。
快速入门:定义并应用裁剪区域以更快地读取条形码
只需几秒钟即可创建裁剪矩形并将其导入 IronBarcode——无需额外设置,操作便捷。 看看使用 BarcodeReaderOptions 将扫描范围限制在特定图像区域是多么容易。
-
使用 NuGet 包管理器安装 https://www.nuget.org/packages/BarCode
PM > Install-Package BarCode -
复制并运行这段代码。
var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { CropArea = new IronSoftware.Drawing.Rectangle(x: 50, y: 100, width: 300, height: 150) }); -
部署到您的生产环境中进行测试
通过免费试用立即在您的项目中开始使用IronBarcode
最小工作流程(5 个步骤)
- 下载用于读取条形码的 C# 库
- 在图像中查找裁剪区域的坐标和大小
- 从坐标创建裁剪区域
- 使用`Read`方法检测并读取条形码
- 将裁剪区域对象传递给方法
如何查找图像中的裁剪区域坐标和尺寸?
有很多方法可以找到图像中某一点的坐标。 一种方法是使用计算机上的 "画图 "应用程序加载图片。 要获取裁剪区域的第一个坐标,请将光标移动到首选的第一个位置,即 Rectangle 的左上角,然后从屏幕左下角的应用程序获取 x、y 坐标。 然后,找到第二个点,它将是 Rectangle 的右下角。 请参考下图以便更清楚地理解。
对于更高级的情况,您还可以考虑使用 GIMP 或 Photoshop 等图像编辑软件,它们提供了精确的像素坐标和测量工具。 有些开发人员喜欢使用在线坐标查找工具或创建简单的 HTML/JavaScript 实用程序,在图像悬停时显示鼠标坐标。
设置作物区域参考
我可以使用哪些工具来确定坐标?
然后可以将坐标值用作 Rectangle 对象的属性。 物体的宽度可以定义为x2 - x1 ,高度可以定义为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)
该坐标系统可与 IronBarcode 的 图像校正功能无缝配合,让您仅对图像的特定区域应用滤镜。
如何应用 CropRegion 和读取 BarCode?
一旦你定义了IronBarcode读取的 CropRegions,你就可以将该对象作为属性之一应用到 BarcodeReaderOptions 中,以及其他设置。 然后,它可以作为参数用于 BarcodeReader.Read() 方法中。 以下代码片段展示了这一过程:
BarcodeReaderOptions 接受哪些参数?
BarcodeReaderOptions 类提供对条形码读取过程的全面控制。 除作物区域外,您还可以配置:
如何处理来自裁剪区域的多个条形码结果?
在扫描包含多个条码的裁剪区域时,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
从上面的代码片段中,我们使用了 Rectangle 对象中的实例化 BarcodeReaderOptions 作为 CropArea 属性。 然后,我们将此 BarcodeReaderOptions 对象作为 BarcodeReader.Read() 方法中的参数,将 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 中的裁剪区域在处理具有多个条码的图像、复杂背景、多页文档或条码位置一致且可预测的高分辨率图像时尤为重要。

