LoginSignup
13
16

More than 5 years have passed since last update.

QRコード読み取り

Last updated at Posted at 2016-02-03

はじめに

事前に以下のライブラリを用意します。

今回のサンプルは以下のjarがあれば動作します。

  • core-3.3.0.jar
  • javase-3.3.0.jar

読み取る画像は以下のファイルを使います。
qr_code.png

実装例

サンプルでは、動作確認しやすいようにmainメソッドで実行できるようにしてあります。
結果だけを確認したい場合は、この記事の一番下のリンク先で使えるようにしてありますのでご覧ください。

QRCodeReader.java
import com.google.zxing.BinaryBitmap;
import com.google.zxing.ChecksumException;
import com.google.zxing.FormatException;
import com.google.zxing.LuminanceSource;
import com.google.zxing.MultiFormatReader;
import com.google.zxing.NotFoundException;
import com.google.zxing.Reader;
import com.google.zxing.Result;
import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
import com.google.zxing.common.HybridBinarizer;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

/**
 *
 * @author tool-taro.com
 */
public class QRCodeReader {

    public static void main(String[] args) throws IOException, NotFoundException, ChecksumException, FormatException {

        //読み取りたい画像ファイルの保存場所
        String filePath = "qr_code.png";

        //読み取り処理
        BufferedImage image = ImageIO.read(new File(filePath));
        LuminanceSource source = new BufferedImageLuminanceSource(image);
        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
        Reader reader = new MultiFormatReader();
        Result decodeResult = reader.decode(bitmap);

        //デコード処理
        String result = decodeResult.getText();
        //標準出力
        System.out.format("読み取り結果=%1$s", result);
    }
}

動作確認

$ javac QRCodeReader.java
$ java QRCodeReader
$ 読み取り結果=タロウ

環境

  • 開発

    • Windows 10 Pro
    • JDK 1.8.0_112
    • NetBeans IDE 8.2
  • 動作検証

    • CentOS Linux release 7.3
    • JDK 1.8.0_112

上記の実装をベースにWebツールも公開しています。
QRコード読み取り(QR Code Reader)|Web便利ツール@ツールタロウ

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16