您是否正在尋找一種以編程方式從圖像中讀取條形碼或 QR 碼的方法?如果您是開發人員,並且需要創建自己的條碼閱讀器應用程序?你來對地方了。條形碼對於準確跟踪庫存和產品從製造到銷售點的交付至關重要。我們可以在.NET應用程序中輕鬆檢測、識別和讀取不同類型的條形碼和二維碼。在本文中,我們將通過幾個簡單的步驟向您展示如何使用 C# 從圖像中讀取條形碼。您可以將本文用作開發條形碼閱讀器或掃描器應用程序的分步指南。
首先,我們將了解 C# 條碼閱讀器 API,以讀取輸入圖像中可用的條碼。接下來,我們將介紹如何從圖像中檢測、識別和提取條形碼數據的步驟。您將找到詳細的步驟和代碼片段。最後,我們將提供有用的鏈接以進一步增強功能。讓我們開始吧!
本文將涵蓋以下主題:
- 從圖像中讀取條碼的 C# API
- 從圖像中讀取條形碼的步驟
- 從位圖中讀取條碼
- 使用流從圖像中讀取條碼
- 如何讀取特定類型的條碼
- 從一張圖片中讀取多種類型的條碼
- 檢測並讀取預定義的符號集
- 檢測並讀取圖像中的多個條形碼
- 獲取條碼的X和Y坐標 10.讀取圖片特定區域的條碼
- 從圖像的多個區域讀取條碼
用於從圖像讀取條形碼的 C# API
為了從圖像中讀取條形碼,我們將使用 Aspose.BarCode for .NET API。 API 允許生成、掃描和讀取範圍廣泛的條形碼符號。它可以渲染 JPEG、TIFF、PNG、BMP 和 GIF 格式的條碼圖像。
API 提供了 BarCodeReader 類,可以從給定圖像中識別 60 多種不同的條形碼類型。檢測條形碼的第一步是指定帶有條形碼的圖像的來源。這可以是文件、位圖對像或流。然後需要在 DecodeType 參數中指定目標符號。我們可以通過指定 DecodeType.AllSupportedTypes 查看所有不同類型的支持符號。此類的 ReadBarCodes() 方法返回一個已識別條碼數組。 API的BarCodeResult類存儲識別出的條碼數據,如條碼類型、條碼文本、區域等參數。
API 還允許指定條形碼閱讀器應讀取的圖像區域。這可以使用 .NET Rectangle 對象來完成,並且允許避免在默認情況下不包含條碼的圖像區域中查找條碼的需要。
請下載 API 的 DLL 或使用 NuGet 安裝它。
PM> Install-Package Aspose.BarCode
使用 C# 從圖像中讀取條形碼
我們可以按照以下步驟輕鬆地從圖像中讀取條形碼:
- 首先,使用 BarCodeReader 類加載圖像。
- 調用readBarCodes()方法,在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何使用 C# 從圖像中讀取條形碼。
// 此代碼示例演示如何從圖像文件中讀取條形碼。
// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Sample.png");
// 讀取條形碼並顯示結果
foreach(BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C#從位圖中讀取條碼
我們可以按照以下步驟輕鬆地從圖像中讀取條形碼:
- 首先,使用 Bitmap 類加載圖像。
- 接下來,使用 Bitmap 對象創建 BarCodeReader 類的實例。
- 調用 ReadBarCodes() 方法,在 BarCodeResult 類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例顯示瞭如何在 C# 中從位圖中讀取條形碼。
// 此代碼示例演示如何從位圖中讀取條形碼。
// 在位圖中加載圖像
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\Code128.jpg");
// 初始化條形碼閱讀器
BarCodeReader reader = new BarCodeReader(bmp);
// 讀取指定區域中的所有條形碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
在 C# 中使用 Stream 從圖像中讀取條碼
我們還可以使用文件流加載條碼圖像並按照以下步驟讀取條碼:
- 首先,使用 FileStream 類加載圖像。
- 接下來,使用流對象創建 BarCodeReader 類的實例。
- 調用 ReadBarCodes() 方法,在 BarCodeResult 類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何在 C# 中使用 Stream 從圖像中讀取條形碼。
// 此代碼示例演示如何使用文件流從圖像中讀取條形碼。
// 載入圖片
Stream stream = new FileStream("C:\\Files\\BarCode\\MultipleBarcodes.jpeg", FileMode.Open, FileAccess.Read);
// 初始化條形碼閱讀器
BarCodeReader reader = new BarCodeReader(stream);
// 讀取指定區域中的所有條形碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C#從圖像中讀取特定類型的條碼
建議選擇將考慮進行識別的目標條碼符號體系,以最大限度地減少完成識別所需的時間,並避免嘗試識別過時的條碼。
我們可以按照以下步驟指定目標條碼類型並從圖像中讀取條碼:
- 首先,使用 BarCodeReader 類加載圖像。
- 接下來,設置條碼解碼類型,例如 Code39Standard。
- 之後,使用ReadBarCodes()方法在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何使用 C# 從圖像中讀取特定類型的條形碼。
// 此代碼示例演示如何從圖像中讀取特定解碼類型的條形碼。
// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.Code39Standard);
// 讀取 Code39Extended 類型的條碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
C#讀取圖片中多種類型的條碼
我們還可以按照以下步驟指定多種條形碼類型:
- 首先,使用 BarCodeReader 類加載圖像。
- 接下來,使用 SetBarCodeReadType() 方法設置條碼解碼類型。
- 之後,使用ReadBarCodes()方法在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何使用 C# 從圖像中讀取多種類型的條形碼。
// 此代碼示例演示如何從圖像中讀取多種解碼類型的條形碼。
// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png");
reader.SetBarCodeReadType(DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
// 讀取條形碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
我們還可以在 BarCodeReader 類的構造函數中指定多種解碼類型,如下所示:
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.DataMatrix, DecodeType.QR, DecodeType.Code39Extended);
在 C# 中從圖像中讀取預定義的條碼類型集
我們可以讀取 DecodeTypes 類中定義的一組預定義的符號體係以進行識別。我們可以設置以下任何預定義集:
- AllSupportedTypes - 所有支持的條形碼類型
- Types1D - 所有支持的一維符號
- Types2D - 所有支持的二維符號
- PostalTypes - 所有受支持的郵政符號體系,主要由郵政服務使用
- MostCommonTypes - 定義了一組最廣泛使用的條碼標準
我們可以按照以下步驟指定預定義集:
- 首先,首先,使用 BarCodeReader 類加載圖像。
- 接下來,在 BarCodeReader 構造函數或 SetBarCodeReadType 方法中設置條碼解碼類型,例如 DecodeType.Types2D。
- 之後,使用ReadBarCodes()方法在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何使用 C# 中預定義的一組符號來讀取條形碼。
// 此代碼示例演示如何使用一組預定義的符號來讀取條形碼。
// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.Types1D);
// 讀取條形碼並顯示結果
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
在 C# 中從圖像中讀取多個條形碼
我們還可以按照以下步驟從圖像中讀取所有可用的條形碼:
- 首先,使用 BarCodeReader 類加載圖像。
- 接下來,將條碼解碼類型設置為 ALLSUPPORTEDTYPES。
- 之後,使用ReadBarCodes()方法在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何使用 C# 從圖像中讀取多個條形碼。
// 此代碼示例演示如何從圖像中讀取條形碼多個條形碼。
// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\MultipleBarcodes.png", DecodeType.AllSupportedTypes);
// 讀取輸入圖像上可用的所有類型的條形碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
使用 C# 獲取條形碼的 X 和 Y 坐標
我們可以按照以下步驟從圖像中讀取檢測到的條形碼的 X 和 Y 坐標:
- 首先,使用 BarCodeReader 類加載圖像。
- 接下來,使用 ReadBarCodes() 方法在 BarCodeResult 類對像中獲取識別結果。
- 然後,遍歷結果並檢查 Region 是否不為空。
- 之後,使用 Points 獲取條形碼區域邊界的 Points 數組。
- 最後,顯示條形碼的 X 和 Y 點。
以下代碼示例顯示瞭如何使用 C# 從圖像中獲取條形碼的 X 和 Y 坐標點。
// 此代碼示例演示如何從圖像中讀取條形碼的 X 和 Y 區域點。
// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader("C:\\Files\\BarCode\\Code39Standard.jpg", DecodeType.AllSupportedTypes);
// 讀取條碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
if (result.Region != null)
{
// 顯示檢測到的所有條碼的 x 和 y 坐標
Point[] point = result.Region.Points;
Console.Out.WriteLine("Top left coordinates: X = " + point[0].X + ", Y = " + point[0].Y);
Console.Out.WriteLine("Bottom left coordinates: X = " + point[1].X + ", Y = " + point[1].Y);
Console.Out.WriteLine("Bottom right coordinates: X = " + point[2].X + ", Y = " + point[2].Y);
Console.Out.WriteLine("Top right coordinates: X = " + point[3].X + ", Y = " + point[3].Y);
}
}
在 C# 中從圖像的特定區域讀取條形碼
我們可以按照以下步驟從特定區域或圖像區域讀取條形碼:
- 首先,使用位圖方法讀取圖像文件的緩衝區數據。
- 接下來,創建 BarCodeReader 類的一個實例。它以圖像、矩形區域和解碼類型作為參數。
- 之後,使用ReadBarCodes()方法在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例展示瞭如何使用 C# 從圖像的特定區域讀取條形碼。
// 此代碼示例演示如何從圖像的特定區域讀取條形碼。
// 載入圖片
Bitmap img = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.jpeg");
// 創建 BarCodeReader 類的實例
// 並指定一個區域來查找條形碼
BarCodeReader reader = new BarCodeReader(img, new Rectangle(0, 0, 400, 200));
// 讀取指定區域中的所有條形碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
}
在 C# 中從圖像的多個區域讀取條形碼
我們還可以按照以下步驟從圖像的多個區域讀取條形碼:
- 首先,使用 Bitmap 類加載圖像。
- 接下來,使用 Rectangle 類定義矩形。
- 然後,創建 BarCodeReader 類的實例。
- 同時,使用圖像對象和矩形作為參數調用 SetBarCodeImage().
- 或者,使用 SetBarCodeReadType() 方法設置條碼讀取類型。
- 之後,使用ReadBarCodes()方法在BarCodeResult類對像中獲取識別結果。
- 最後,遍歷結果並顯示條形碼的類型和文本。
以下代碼示例顯示瞭如何使用 C# 從圖像的多個區域讀取條形碼。
// 此代碼示例演示如何從圖像的特定區域讀取條形碼。
// 在位圖中加載圖像
Bitmap bmp = new Bitmap("C:\\Files\\BarCode\\MultipleBarcodes.png");
// 源圖像中二維條碼的矩形
Rectangle rect2D = new Rectangle(0, 0, 400, 200);
// 源圖像中 Code128 條碼的矩形
Rectangle rectCode128 = new Rectangle(450, 100, 600, 180);
// 初始化條形碼閱讀器
BarCodeReader reader = new BarCodeReader();
reader.SetBarCodeImage(bmp, new Rectangle[] { rect2D, rectCode128 });
reader.SetBarCodeReadType(DecodeType.AllSupportedTypes);
// 讀取指定區域中的所有條形碼
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.Out.WriteLine("CodeText: " + result.CodeText);
Console.Out.WriteLine("Symbology type: " + result.CodeType);
Console.Out.WriteLine("-------------------------");
}
獲得免費許可證
您可以 獲得免費的臨時許可證 來試用該庫,而沒有評估限制。
結論
在本文中,我們學習瞭如何:
- 加載條碼圖像文件;
- 將圖像讀取為位圖或使用文件流;
- 從圖像中識別不同類型的條形碼;
- 讀取條形碼坐標;
- 從單個圖像中檢測和讀取多個條形碼;
- 從圖像的特定區域檢測和讀取條形碼。
除了在 C# 中從圖像中讀取條碼外,您還可以使用 文檔 了解有關 Aspose.BarCode for .NET API 的更多信息。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。