Java QRコードジェネレーター – zxingの例

今日は、JavaのQRコードジェネレータープログラムについて見ていきます。もし、テクノロジーやガジェットに詳しいのであれば、QRコードについてはご存知でしょう。最近では、ブログやウェブサイト、一部の公共の場所でもよく見かけるようになりました。特にモバイルアプリでは非常に人気があり、QRコードスキャナーアプリを使ってQRコードを読み取ると、テキストを表示したり、URLの場合はウェブページにリダイレクトしたりします。最近これを見つけてとても興味深いと思いました。もしQRコードについて知りたいのであれば、WikipediaのQRコードページで多くの有益な情報を見つけることができます。

JavaでQRコードを生成するもの

多くのウェブサイトでQRコードの画像を見つけたので、JavaのQRコードジェネレータを探し始めました。いくつかのオープンソースAPIを調べた結果、zxingがシンプルで使いやすいと分かりました。もしQRコードの画像を生成したいのであれば、そのコアライブラリだけを必要とします。Mavenプロジェクトに以下の依存関係を追加してください。

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>core</artifactId>
	<version>3.3.2</version>
</dependency>

コマンドラインを通じてQR画像を読み込みたい場合は、JavaSEライブラリを使用する必要があります。以下の依存関係を追加できます。

<dependency>
	<groupId>com.google.zxing</groupId>
	<artifactId>javase</artifactId>
	<version>3.3.2</version>
</dependency>
zxing maven dependencies

ZXingの例を使用して、QRコードの画像を生成する。

「Zxing APIを使用してQRコード画像を作成するためのプログラムがこちらです。GenerateQRCode.javaです。」

package com.scdev.qrcode.generator;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;

import javax.imageio.ImageIO;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

public class GenerateQRCode {

	public static void main(String[] args) throws WriterException, IOException {
		String qrCodeText = "https://www.scdev.com";
		String filePath = "JD.png";
		int size = 125;
		String fileType = "png";
		File qrFile = new File(filePath);
		createQRImage(qrFile, qrCodeText, size, fileType);
		System.out.println("DONE");
	}

	private static void createQRImage(File qrFile, String qrCodeText, int size, String fileType)
			throws WriterException, IOException {
		// Create the ByteMatrix for the QR-Code that encodes the given String
		Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
		hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
		QRCodeWriter qrCodeWriter = new QRCodeWriter();
		BitMatrix byteMatrix = qrCodeWriter.encode(qrCodeText, BarcodeFormat.QR_CODE, size, size, hintMap);
		// Make the BufferedImage that are to hold the QRCode
		int matrixWidth = byteMatrix.getWidth();
		BufferedImage image = new BufferedImage(matrixWidth, matrixWidth, BufferedImage.TYPE_INT_RGB);
		image.createGraphics();

		Graphics2D graphics = (Graphics2D) image.getGraphics();
		graphics.setColor(Color.WHITE);
		graphics.fillRect(0, 0, matrixWidth, matrixWidth);
		// Paint and save the image using the ByteMatrix
		graphics.setColor(Color.BLACK);

		for (int i = 0; i < matrixWidth; i++) {
			for (int j = 0; j < matrixWidth; j++) {
				if (byteMatrix.get(i, j)) {
					graphics.fillRect(i, j, 1, 1);
				}
			}
		}
		ImageIO.write(image, fileType, qrFile);
	}

}

このプログラムで作成されたQRコードの画像ファイルがこちらにあります。モバイルのQRコードスキャナーアプリを使用してテストすることができます。それはJournalDevホームのURLを指しているはずです。

ZXingの例を使用してQRコードを読み取る方法

モバイルアプリをテストする手段がない場合も心配ありません。コマンドラインを介してzxing APIでQRコードを読むことができます。以下は、QRコードの画像ファイルを読むためのコマンドです。zxingが依存している追加のjarファイルがクラスパスにあることに注意してください。

$java -cp $HOME/.m2/repository/com/google/zxing/javase/3.3.2/javase-3.3.2.jar:.:$HOME/.m2/repository/com/google/zxing/core/3.3.2/core-3.3.2.jar:$HOME/.m2/repository/com/beust/jcommander/1.72/jcommander-1.72.jar:$HOME/.m2/repository/com/github/jai-imageio/jai-imageio-core/1.3.1/jai-imageio-core-1.3.1.jar com.google.zxing.client.j2se.CommandLineRunner JD.png
zxing read qr code image

弊社のGitHubリポジトリからQRコードジェネレーターとリーダーのMavenプロジェクトをダウンロードすることができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *