안녕하세요. 오늘은 바코드 이미지를 생성, 스캔할 수 있는 자바 라이브러리를 알아보겠습니다.
요즘 QR-Code 니 Code128 이니 하는 등의 바코드를 생성하여 이미지로 출력하거나, PDF 파일 등에 삽입하기 위해서 1차원, 2차원 바코드를 생성하는 라이브러리를 검색해 보았습니다.
대표적인 라이브러리로 오랜? 전통의 ZXing(Zebra Crossing), ZBar 라이브러리가 대표적입니다.
스마트폰은 이미지를 출력할 수 있는 화면과, 바코드를 인식할 수 있는 카메라가 모두 포함되어 있어서 자연스럽게 하드웨어 바코드 리더기를 구입하기 부담스러워 하시는 분들이 종종 사용합니다.
이전에는 많은 기업들이 광고 마케팅의 용도로 건물 광고판에 QR-Code 등을 출력하여, 사용자들이 코드를 스캔하여 자신들의 광고 홈페이지 등으로 이동할 수 있게 하거나, 앱 다운로드를 위한 플레이스토어 이동 등에 많이 사용하였습니다.
지금은 살짝 관심에서 멀어지고 있는 것이 현실입니다.
하지만 전통적으로 바코드는 아직까지 공산품 등의 관리를 위해서 많이 사용되고 있습니다. 책이나 과자봉지에도 말이죠.
가장 많이 사용하는 바코드 라이브러리인 ZXing 을 알아보겠습니다. 소스는 Github 를 통하여 확인할 수 있고, 개발툴에서 Gradle, Maven 설정으로 바로 import 하여 사용가능합니다.
글을 쓰는 일자 기준으로 최신 버전은 3.3.2 버전입니다.
지원하는 코드 포맷은 다음과 같습니다.
1D product |
1D industrial |
2D |
UPC-A |
Code 39 |
QR Code |
UPC-E |
Code 93 |
Data Matrix |
EAN-8 |
Code 128 |
Aztec |
EAN-13 |
Codabar |
PDF 417 |
|
ITF |
MaxiCode |
|
RSS-14 |
|
|
RSS-Expanded |
|
1D product 는 제품에 많이 사용하는 바코드의 형식이고, 1D Industrial 은 산업용으로 개발된 바코드입니다. 2D 바코드는 1D 와 다르게 2차원의 이미지형식으로 이루어진 코드를 이야기 합니다.
상당히 많은 코드 체계를 지원합니다. (빠진게 있는지 모르겠네요.. 거의 다 지원한다고 보면 됩니다.)
코드 관리도 패키지 명에서 보는 바와 같이 com.google.zxing 이니 믿을만 하겠지요?
프로젝트에서 Maven 을 이용하는 경우
<!-- https://mvnrepository.com/artifact/com.google.zxing/core -->
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.2</version>
</dependency>
Gradle 을 이용하는 경우
// https://mvnrepository.com/artifact/com.google.zxing/core
compile group: 'com.google.zxing', name: 'core', version: '3.3.2'
물론 안드로이드에서 사용하신다면 compile 이라는 예약어 대신에 요즘은 implementations 를 사용해야 하는건 덤입니다. ^^
ZBar 의 경우는 오픈 소르로 sourceforge 에서 배포되고 있습니다.
오랜 전통을 가지고 있는 라이브러리로 다양한 플랫폼을 지원합니다. 리눅스, 유닉스, 윈도우, 아이폰, 각종 임베디드 OS, 물론 안드로이드도 제공합니다.
오래된 라이브러리라서 현재 관리가 어떻게 이루어지는지 모르겠습니다. 다만, 해당 오픈소스를 이용하여 안드로이드용 라이브러리를 개인개발자 분들이 배포하고 있습니다.
대표적으로 me.dm7.barcodescanner:zbar 라는 라이브러리가 있습니다. 하지만 2017년 8월 기준으로 더 이상 수정본이 발표되고 있지 않습니다. (github 에는 많은 issue 가 등록되어 있는데, 개발자분이 바쁜지 처리가 되고 있지 않는게 많습니다.)
프로젝트에서 Maven 을 이용하는 경우
<!-- https://mvnrepository.com/artifact/me.dm7.barcodescanner/zbar -->
<dependency>
<groupId>me.dm7.barcodescanner</groupId>
<artifactId>zbar</artifactId>
<version>1.9.8</version>
</dependency>
프로젝트에서 Gradle 을 이용하는 경우
// https://mvnrepository.com/artifact/me.dm7.barcodescanner/zbar
compile group: 'me.dm7.barcodescanner', name: 'zbar', version: '1.9.8'
그래서 저는 라이브러리의 사이즈, 개발의 편의성, 버전 업데이트 등을 따져보고 Zxing 을 사용하고 있습니다.
조만간 안드로이드용 앱이 어느정도 개발이 완료되면 소개글을 한번 올리겠습니다.
이상 안드로이드용 바코드 이미지 생성, 스캔을 할 수 있는 라이브러리를 알아보았습니다.