Java ライブラリ ZXing でバーコードを生成/操作しよう (第2回:ITFバーコードを生成しよう)

投稿者 : OSCA

[PR] 関東地方の美しい夜景を観にいこう。 夜景サイト「夜景散歩」で夜景スポットを検索

本連載では Java でバーコードを生成/操作するライブラリ ZXing について解説しています。 前回は ZXing の概要について解説しました。 今回は ZXing を使ってITFバーコードを生成するためのサンプルプログラムを示したいと思います。

ITFバーコードを生成するプログラム

今回は ITF と呼ばれるバーコードを生成してみましょう。 ITF バーコードは、日本の流通で使われているもので、皆さんの身の回りに溢れているとても身近なものです。 標準は14桁の ITF-14 というもので、16桁に拡張したバージョンの ITF-16 というもの等があります。

今回のサンプルプログラムで生成されるバーコードは下図のようなものです。

バーコード

それではさっそくサンプルプログラムを見ていきます。

package sample.zxing;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.ITFWriter;

public class Main {
  public static void main(String args[]) {
    try {
      String        contents = "12345678901231";
      BarcodeFormat format   = BarcodeFormat.ITF;
      int           width    = 200;
      int           height   = 50;

      ITFWriter writer = new ITFWriter();
      BitMatrix bitMatrix = writer.encode(contents, format, width, height);
      BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
      ImageIO.write(image, "png", new File("barcode.png"));
    }
    catch( IOException e ) {
      e.printStackTrace();
    }
    catch (WriterException e) {
      e.printStackTrace();
    }
  }
}

上のプログラムで重要なのは、 try で囲まれた実質8行だけです。 最初の4行と後の4行をそれぞれ解説します。

最初の4行は次のようになっています。

String        contents = "12345678901231";
BarcodeFormat format   = BarcodeFormat.ITF;
int           width    = 200;
int           height   = 50;

変数名からなんとなく意味が分かると思いますが、 contents はバーコードで表したい内容です。 ここでは “12345678901231” という数字列をバーコードで表現します。 尚、ITF-14 のコードは14桁で更に14文字目はチェックデジットとなる数値である必要があります。 なので “1234567890123” という13文字から算出したチェックデジットが、14桁目の “1” ということになります。
format は生成するバーコードの種類を、width は生成するバーコードの幅、height は生成するバーコードの高さを宣言しています。

後半の4行は次のようになっています。

ITFWriter writer = new ITFWriter();
BitMatrix bitMatrix = writer.encode(contents, format, width, height);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
ImageIO.write(image, "png", new File("barcode.png"));

ITFバーコードを出力するためのクラス ITFWriter をインスタンス化して、上で宣言した変数を encode メソッドに指定してビットマトリックスを生成しています。
あとは生成したバーコードのビットマトリックスを画像ファイル “barcode.png” として PNG 形式で保存したいため、ImageIO を利用してファイルに出力しています。

ITF-16 バーコードの出力

上記では ITF-14 のバーコードを出力しましたが、同様に ITF-16 のバーコードを出力することも可能です。 指定する contents を16文字で指定すればOKです。 尚、ITFWriterそのもののソースコードを覗いてみると80桁までであれば生成が可能のようです。(但し2の倍数の桁数である必要がある)

おわりに

今回はバーコードを生成するサンプルプログラムを示しました。 ZXing を利用してバーコードを生成する雰囲気を掴んで頂けたでしょうか? 次回は二次元バーコードであるQRコードの生成について解説します。

更新履歴

  • 2014年07月12日 – 初稿を投稿しました。
  • 2014年08月29日 – ITFバーコードの種類に触れるように本文を若干修正しました。

Javaのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca