Java를 사용하여 이미지에서 바코드 읽기

바코드는 제조에서 판매 시점까지 제품의 정확한 재고 추적 및 배송에 중요한 역할을 합니다. 어떤 경우에는 프로그래밍 방식으로 이미지에서 바코드를 읽어야 할 수도 있습니다. Java 애플리케이션에서 다양한 유형의 바코드 및 QR 코드를 쉽게 감지, 인식 및 읽을 수 있습니다. 바코드 리더 또는 스캐너 응용 프로그램을 개발하는 데 도움이 됩니다. 이 기사에서는 Java를 사용하여 이미지에서 바코드를 읽는 방법을 배웁니다.

이 기사에서는 다음 주제를 다룹니다.

바코드란?

바코드는 인코딩된 데이터를 숫자 및 평행선 패턴의 형태로 나타내는 기계 판독 가능 코드입니다. 바코드 이미지는 너비, 간격 및 크기를 변경하는 일련의 평행한 흑백 막대를 보여줍니다. 바코드 판독기 또는 스캐너는 바코드 이미지를 스캔하고 정보를 디코딩합니다.

이미지에서 바코드를 읽는 Java API

Java 애플리케이션 내의 이미지에서 바코드를 읽기 위해 Aspose.BarCode for Java를 사용합니다. 다양한 바코드 기호를 생성, 스캔 및 읽을 수 있는 기능이 풍부한 API입니다. API의 BarCodeReader 클래스를 사용하면 바코드를 읽을 수 있습니다. 이 클래스의 readBarCodes() 메서드는 인식된 바코드의 배열을 반환합니다. 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 클래스의 인스턴스를 만듭니다.
  • 그런 다음 CODE\39\STANDARD와 같은 특정 유형의 바코드를 읽도록 바코드 디코딩 유형을 설정합니다.
  • 그 후 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 클래스를 사용하여 이미지를 로드합니다.
  • 다음으로 바코드 디코드 유형을 ALL\SUPPORTED\TYPES로 설정합니다.
  • 그 후 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()이 null이 아닌지 확인합니다.
  • 그런 다음 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\\";

// BufferedImage 가져오기
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에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.

또한보십시오