如何在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

如何在圖像中找到裁剪區域的坐標和大小?

有很多方法可以找到圖像中一個點的坐標。 一種方法是使用電腦上的Paint應用程式載入圖像。 要獲取裁剪區域的第一個坐標,將光標移動到首選的第一個點,這將是Rectangle的左上角,然後採集螢幕左下方應用程式給出的x, y坐標。 然後找到第二個點,這將是Rectangle的右下角。 請參考下面的圖像以獲得更清楚的理解。

對於更進階的情況,您可能還考慮使用GIMP或Photoshop之類的圖像編輯軟體,它們提供精確的像素坐標和測量工具。 一些開發者更喜歡使用線上坐標查找工具或建立簡單的HTML/JavaScript工具來顯示圖片懸停時的滑鼠坐標。

裁切區域圖,顯示帶有角點座標 (x1,y1) 與 (x2,y2) 的矩形區域及尺寸計算

我可以使用什麼工具來確定坐標?

然後可以將坐標值用作Rectangle物件的屬性。 物件的width可以定義為x2 - x1,而height可以定義為y2 - y1。 在處理條碼圖像時,重要的是要了解坐標從左上角(0,0)開始,並且隨著向右(x軸)和向下(y軸)的移動而增加。

幾種坐標確定方法包括:

  • 內建OS工具:Windows Paint,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並讀取條碼?

一旦您定義了希望IronBarcode閱讀的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
$vbLabelText   $csharpLabel

在上面的程式碼片段中,我們在CropArea屬性。 然後我們將此CropArea應用於圖像並讀取其中的條碼。

進階裁剪區域技術

對於生產應用程式,請考慮以下高級策略:

  1. 動態裁剪區域:根據文件模板或OCR結果計算裁剪區域
  2. 多個區域:在一個圖像中處理多個裁剪區域以應對複雜的佈局
  3. 性能優化:將裁剪區域與異步處理結合,以獲得最大吞吐量
  4. 錯誤處理:在預期區域中找不到條碼時,實施備援策略

在使用PDF文件時,您可以將裁剪區域應用於特定頁面,大幅縮短大文件的處理時間。 這對於發票、運送標籤或條碼位置標準化的表單特別有用。

定義裁剪區域的最佳實踐

為了最大限度地提高裁剪區域的效果:

  • 新增空白:在預期條碼位置周圍加入10-20像素以應對細微的變化
  • 徹底測試:驗證裁剪區域在您的整套文件中運作良好
  • 文件化坐標:維護您應用程式常用裁剪區域的參考表
  • 考慮縮放:考慮不同的圖像解析度或DPI設置
  • 監控性能:跟踪處理時間以驗證裁剪區域的有效性

對於需要容錯能力的應用程式,實施兩步方法:首先掃描裁剪區域,如果沒有在預期區域找到條碼,則回到全圖像掃描。

結論

在您的.NET應用程式中定義裁剪區域是優化條碼讀取性能的一種強大技術。 通過將掃描範圍限制於特定區域,您可以顯著提高速度並降低誤判。 無論您是處理單張圖片還是批量操作,裁剪區域提供了生產環境所需的精度和性能。

常見問題

什麼是條碼裁剪區域,為什麼要使用它?

條碼裁剪區域是影像中IronBarcode專注其掃描工作的特定區域。通過使用IronSoftware.Drawing.Rectangle定義裁剪區域,您可以實現高達5倍的條碼讀取速度,同時通過將掃描限制在影像的相關區域來減少錯誤。

我如何定義條碼讀取的裁剪區域?

您可以通過建立帶有特定座標(x, y)和尺寸(width, height)的IronSoftware.Drawing.Rectangle物件在IronBarcode中定義裁剪區域,然後在調用Read方法時將其傳遞給BarcodeReaderOptions.CropArea屬性。

使用裁剪區域可以期待什麼性能提升?

IronBarcode的裁剪區域功能可以將條碼讀取性能提高到掃描整個影像的5倍。這在處理多頁面文件或條碼位置可預測的高解析度影像時尤其有利。

我如何找到裁剪區域的正確座標?

您可以使用像Microsoft Paint、GIMP或Photoshop的圖像編輯軟體找到裁剪區域座標。只需打開您的照片,將游標移動到區域的左上角,記下x,y座標,然後找到右下角座標以確定IronBarcode中Rectangle的寬度和高度。

何時使用裁剪區域特別有益?

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
運行範例觀看您的字串成為條碼。