使用Java從圖像中讀取條碼

條形碼在準確跟踪庫存和產品從製造到銷售點的交付過程中發揮著至關重要的作用。在某些情況下,我們可能需要以編程方式從圖像中讀取條形碼。我們可以在Java應用程序中輕鬆檢測、識別和讀取各種類型的條形碼和二維碼。它有助於開發條形碼閱讀器或掃描儀應用程序。在本文中,我們將學習如何使用 Java 從圖像中讀取條形碼。

本文應涵蓋以下主題:

什麼是條碼

條形碼是一種機器可讀代碼,以數字和平行線圖案的形式表示編碼數據。條形碼圖像顯示一系列寬度、間距和大小各不相同的平行黑白條。條形碼閱讀器或掃描儀掃描條形碼圖像並對信息進行解碼。

從圖像中讀取條碼的 Java API

為了在 Java 應用程序中讀取圖像中的條形碼,我們將使用 Aspose.BarCode for Java。它是一個功能豐富的 API,可讓您生成、掃描和讀取各種條碼符號。 API 的 BarCodeReader 類允許讀取條形碼。此類的 readBarCodes() 方法返回一組已識別的 barcodes。 API 允許讀取指定 DecodeType 的條形碼。 API的BarCodeResult類存儲了識別到的條碼數據,如條碼類型、條碼文本、區域等參數。

下載 API 的 JAR 或在基於 Maven 的 Java 應用程序中添加以下 pom.xml 配置。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-barcode</artifactId>
    <version>22.5</version>
</dependency>

從 Java 中的圖像讀取條形碼

我們可以按照以下步驟從圖像中讀取條形碼:

  • 首先,使用 BarCodeReader 類加載圖像。
  • 使用 readBarCodes() 方法在 BarCodeResult 類對像中獲取識別結果。
  • 最後,遍歷結果並顯示條形碼的類型和文本。

以下代碼示例顯示瞭如何使用 Java 從圖像中讀取條形碼。

// 此代碼示例演示如何從圖像中讀取條形碼。
// 圖片目錄路徑
String dataDir = "C:\\Files\\BarCode\\";

// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader(dataDir + "CodeText.jpg");

// 讀取條形碼並顯示結果
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
}
從圖像中讀取條形碼。

從 Java 中的圖像讀取條形碼。

在Java中識別特定類型的條碼

我們可以按照以下步驟從圖像中讀取特定類型的條形碼:

  • 首先,使用 ImageIO.read() 方法讀取圖像文件的緩衝區數據。
  • 接下來,使用緩衝圖像和解碼類型創建 BarCodeReader 類的實例。
  • 然後設置條碼解碼類型,讀取特定類型的條碼,如CODE39STANDARD。
  • 之後,使用readBarCodes()方法在BarCodeResult類對像中獲取識別結果。
  • 最後,遍歷結果並顯示條形碼的類型和文本。

以下代碼示例顯示瞭如何使用 Java 從圖像中讀取特定類型的條形碼。

// 此代碼示例演示如何從圖像中讀取特定解碼類型的條形碼。
// 圖片目錄路徑
String dataDir = "C:\\Files\\BarCode\\";

// 獲取拋光圖像
BufferedImage img = ImageIO.read(new File(dataDir + "CODE_39_STANDARD.jpg"));

// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader(img, DecodeType.CODE_39_STANDARD);

// 讀取 Code39Extended 類型的條碼
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
}
識別特定類型的條形碼。

識別Java中特定類型的條形碼。

在 Java 中從圖像中讀取多個條形碼

我們還可以按照以下步驟從圖像中讀取所有可用的條形碼:

  • 首先,使用 BarCodeReader 類加載圖像。
  • 接下來,將條碼解碼類型設置為 ALLSUPPORTEDTYPES。
  • 之後,使用readBarCodes()方法在BarCodeResult類對像中獲取識別結果。
  • 最後,遍歷結果並顯示條形碼的類型和文本。

以下代碼示例顯示瞭如何使用 Java 從圖像中讀取多個條形碼。

// 此代碼示例演示如何從圖像中讀取條形碼多個條形碼。
// 圖片目錄路徑
String dataDir = "C:\\Files\\BarCode\\";

// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader(dataDir + "MultipleBarcodes.png", DecodeType.ALL_SUPPORTED_TYPES);

// 讀取輸入圖像上可用的所有類型的條形碼
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
  System.out.println("-------------------------");
}
從圖像中讀取多個條形碼。

從圖像中讀取多個條形碼。

使用 Java 獲取條形碼的 X 和 Y 坐標

我們可以按照以下步驟從圖像中讀取檢測到的條形碼的 X 和 Y 坐標:

  • 首先,使用 BarCodeReader 類加載圖像。
  • 接下來,使用 readBarCodes() 方法在 BarCodeResult 類對像中獲取識別結果。
  • 然後,遍歷結果並檢查 getRegion() 是否不為空。
  • 之後,使用 getPoints() 獲取條形碼區域邊界的 Points 數組。
  • 最後,顯示條形碼的 X 和 Y 點。

以下代碼示例顯示瞭如何使用 Java 從圖像中獲取條形碼的 X 和 Y 坐標點。

// 此代碼示例演示如何從圖像中讀取條形碼的 X 和 Y 區域點。
// 圖片目錄路徑
String dataDir = "C:\\Files\\BarCode\\";

// 初始化條碼閱讀器
BarCodeReader reader = new BarCodeReader(dataDir + "Code39Std.png", DecodeType.ALL_SUPPORTED_TYPES);

// 讀取條碼
for (BarCodeResult result : reader.readBarCodes()) {
  if (result.getRegion() != null) {
    // 顯示檢測到的所有條碼的 x 和 y 坐標
    Point[] point = result.getRegion().getPoints();
    System.out.println("Top left coordinates: X = " + point[0].x + ", Y = " + point[0].y);
    System.out.println("Bottom left coordinates: X = " + point[1].x + ", Y = " + point[1].y);
    System.out.println("Bottom right coordinates: X = " + point[2].x + ", Y = " + point[2].y);
    System.out.println("Top right coordinates: X = " + point[3].x + ", Y = " + point[3].y);
  }
}
獲取條形碼的 X 和 Y 坐標。

從圖像中獲取條形碼的 X 和 Y 坐標。

在 Java 中從圖像的特定區域讀取條形碼

我們可以按照以下步驟從特定區域或圖像區域讀取條形碼:

  • 首先,使用 ImageIO.read() 方法讀取圖像文件的緩衝區數據。
  • 接下來,創建 BarCodeReader 類的一個實例。它以緩衝圖像、矩形區域和解碼類型作為參數。
  • 之後,使用readBarCodes()方法在BarCodeResult類對像中獲取識別結果。
  • 最後,遍歷結果並顯示條形碼的類型和文本。

以下代碼示例顯示瞭如何使用 Java 從圖像的特定區域讀取條形碼。

// 此代碼示例演示如何從圖像的特定區域讀取條形碼。
// 圖片目錄路徑
String dataDir = "C:\\Files\\BarCode\\";

// 獲取緩衝圖像
java.awt.image.BufferedImage img = javax.imageio.ImageIO.read(new java.io.File(dataDir + "specificRegion.png"));

// 創建 BarCodeReader 類的實例
// 並指定一個區域來查找條形碼
BarCodeReader reader = new BarCodeReader(img, new Rectangle(0, 0, 700, 100), DecodeType.ALL_SUPPORTED_TYPES);

// 讀取指定區域中的所有條形碼
for (BarCodeResult result : reader.readBarCodes()) {
  System.out.println("CodeText: " + result.getCodeText());
  System.out.println("Symbology type: " + result.getCodeType());
}
從圖像的特定區域讀取條形碼。

從 Java 中圖像的特定區域讀取條形碼。

獲得免費許可證

您可以 獲得免費的臨時許可證 來試用該庫,而沒有評估限制。

結論

在本文中,我們學習瞭如何:

  • 以編程方式加載條形碼圖像;
  • 從圖像中識別不同類型的條形碼;
  • 在 Java 中讀取條形碼坐標;
  • 從單個圖像中檢測和讀取多個條形碼;
  • 從圖像的特定區域檢測和讀取條形碼。

此外,您可以使用文檔了解更多關於Aspose.BarCode for Java API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看