How to Set a Barcode Crop Region in C#

如何在 C# 中定义条码裁剪区域以加快读取速度 使用 `IronSoftware.Drawing.Rectangle` 定义裁剪区域,将 IronBarcode 的扫描区域限制在特定的图像区域,通过只关注相关区域,显著提高条码读取性能并减少错误。 <!--说明:说明代码概念的图表或截图 --> IronBarcode 最重要的功能之一是指定 **裁剪区域**。 此功能可使 IronBarcode 仅读取特定条形码或使用 `IronSoftware.Drawing.Rectangle` 对象在图像中通过裁剪区域指定的区域。 使用这一功能不仅能减少阅读错误,还能提高阅读效果。 在处理[多页文档](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-pdf/)或条形码位置可预测的高分辨率图像时,这种技术尤其有价值。 在处理具有多个条形码或复杂背景的图像时,定义裁剪区域对于优化[条形码读取速度](https://ironsoftware.com/csharp/barcode/how-to/reading-speed-options/)至关重要。 通过限制扫描区域,可以实现比扫描整个图像快 5 倍的处理速度,同时还能减少非条形码元素带来的误报。 *as-heading:2(快速入门:定义和应用作物区域以更快地读取条形码)* 只需几秒钟即可创建裁剪矩形并将其导入 IronBarcode——无需额外设置,操作便捷。 了解使用`BarcodeReaderOptions`将扫描范围限制在特定图像区域是多么容易。 ```cs :title=Set Crop Region in One Line—Boost Read Speed Instantly var results = IronBarCode.BarcodeReader.Read("image.png", new IronBarCode.BarcodeReaderOptions { CropArea = new IronSoftware.Drawing.Rectangle(x: 50, y: 100, width: 300, height: 150) }); ```

如何查找图像中的裁剪区域坐标和尺寸? <!--说明:说明代码概念的图表或截图 --> 有很多方法可以找到图像中某一点的坐标。 一种方法是使用计算机上的 "画图 "应用程序加载图片。 要获取裁剪区域的第一个坐标,请将光标移动到首选的第一个位置,即`Rectangle`的左上角,然后从屏幕左下角的应用程序获取 x、y 坐标。 然后,找到第二个点,即`Rectangle`的右下角。 请参考下图以便更清楚地理解。 对于更高级的情况,您还可以考虑使用 GIMP 或 Photoshop 等图像编辑软件,它们提供了精确的像素坐标和测量工具。 有些开发人员喜欢使用在线坐标查找工具或创建简单的 HTML/JavaScript 实用程序,在图像悬停时显示鼠标坐标。
Crop region diagram showing rectangular area with corner coordinates (x1,y1) and (x2,y2) and dimension calculations

我可以使用哪些工具来确定坐标? 然后可以将坐标值用作`Rectangle`对象的属性。 物体的**宽度**可以定义为*x2 - x1* ,**高度**可以定义为*y2 - y1* 。 在处理[条形码图像](https://ironsoftware.com/csharp/barcode/how-to/read-barcodes-from-images/)时,必须了解坐标是从左上角(0,0)开始,并随着向右(x 轴)和向下(y 轴)移动而增加。 确定坐标的几种方法包括 - **内置操作系统工具**:Windows 画图,macOS 预览版 - **浏览器开发工具**:检查网络图像上的元素 - **专业软件**:Adobe Photoshop、GIMP - **自定义实用程序**:简单坐标查看器应用程序 - **IronBarcode的调试功能**:导出带坐标叠加的已处理图像

如何根据坐标计算矩形尺寸? 有了两个角点后,计算尺寸就变得简单了。 矩形需要四个参数:x 坐标、y 坐标、宽度和高度。 以下是如何正确实例化作物区域: ```cs :path=/static-assets/barcode/content-code-examples/how-to/set-crop-region-instantiate-CropRegion.cs ``` 该坐标系统可与 IronBarcode 的 [ 图像校正功能](https://ironsoftware.com/csharp/barcode/how-to/image-correction/)无缝配合,让您仅对图像的特定区域应用滤镜。

如何应用 CropRegion 和读取 BarCode? 一旦您定义了希望 IronBarcode 读取的 CropRegions,您就可以将该对象与其他设置一起作为属性之一应用到 `BarcodeReaderOptions` 中。 然后可以将其用作`BarcodeReader.Read()`方法中的参数。 以下代码片段展示了这一过程:

BarcodeReaderOptions 接受哪些参数? `BarcodeReaderOptions` 类提供了对条码读取过程的全面控制。 除作物区域外,您还可以配置: - **速度优化**:使用[速度设置](https://ironsoftware.com/csharp/barcode/examples/reading-speeds/)在准确性和性能之间取得平衡 - **条形码类型**:指定要搜索的准确格式([支持的格式](https://ironsoftware.com/csharp/barcode/get-started/supported-barcode-formats/)) - **图像过滤器**:对倾斜或损坏的 BarCode 进行修正 - **多线程**:启用并行处理以提高性能 - **旋转处理**:自动检测旋转的 BarCode

如何处理来自裁剪区域的多个条形码结果? 在扫描包含多个条码的裁剪区域时,IronBarcode 会返回一个结果集合。 每个结果都包含有价值的元数据,包括作物区域内的确切位置、条形码类型和解码值。 以下是如何实现全面的作物区域处理: ```cs :path=/static-assets/barcode/content-code-examples/how-to/set-crop-region-apply-CropRegion.cs ``` 从上面的代码片段中,我们使用了`BarcodeReaderOptions`对象中实例化的`Rectangle`作为`CropArea`属性。 然后,我们将此`BarcodeReaderOptions`对象作为`BarcodeReader.Read()`方法的参数,将 CropArea 应用于图像并读取其中的条形码。 ## 高级作物区域技术 对于生产应用,可以考虑这些高级策略: 1.**动态裁剪区域**:根据文档模板或 OCR 结果计算裁剪区域 2.**多个区域**:在单个图像中处理多个裁剪区域,实现复杂布局 3.**性能优化**:将裁剪区域与 [async 处理](https://ironsoftware.com/csharp/barcode/how-to/async-multithread/)相结合,实现最大吞吐量 4.**错误处理**:在预期区域未找到条形码时实施后备策略 在处理 [PDF 文档](https://ironsoftware.com/csharp/barcode/examples/pdf-barcode-reader-settings-csharp/)时,您可以对特定页面应用裁剪区域,从而大幅缩短大文件的处理时间。 这对于发票、运输标签或条形码位置标准化的表格尤其有用。 ## 作物区域定义的最佳实践 最大限度地提高作物区域的效率: - **添加衬垫**:在预期条形码位置周围加入 10-20 个像素,以考虑到细微的差异 - **彻底测试**:验证裁剪区域在整个文档集中的工作情况 - **文档坐标**:为您的应用程序维护一份常见作物区域参考表 - **考虑缩放**:考虑不同的图像分辨率或 DPI 设置 - **监控性能**:跟踪处理时间以验证作物区域的有效性 对于需要[容错](https://ironsoftware.com/csharp/barcode/features/fault-tolerance/)的应用程序,应采用两步法:首先扫描裁剪区域,如果在预期区域内未发现条形码,则退回到全图扫描。 ## 结论 定义裁剪区域是优化 .NET 应用程序中条形码读取性能的一项强大技术。 通过将扫描区域限制在特定区域,可以显著提高速度,同时减少误报。 无论您是处理 [ 单个图像](https://ironsoftware.com/csharp/barcode/examples/barcode-quickstart/)还是批量操作,裁剪区域都能提供生产环境所需的精度和性能。

常见问题解答

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

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

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

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

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

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

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

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

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

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

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