QRコードとは

QRコード(Quick Response Code)は、黒と白のスクエア(四角)パターンを使用した二次元のバーコードです。デンソーウェーブによって1994年に開発されました。

QRコードの主な特徴は次のとおりです:

情報の量: QRコードは、数百から数千文字の情報を格納できます。一方、一次元のバーコードは、通常20文字以下の情報しか格納できません。

種類の多さ: QRコードは、テキスト、URL、電子メールアドレス、電話番号、連絡先情報(vCard形式)、カレンダーの予定など、様々な種類の情報を格納することができます。

エラー訂正機能: QRコードにはエラー訂正機能があり、汚れや破れによってQRコードの一部が欠落してもオリジナルのデータを再構築することができます。

読み取り速度: "Quick Response"の名前が示すように、QRコードは高速に読み取ることができます。

アクセシビリティ: 今日のほとんどのスマートフォンには、QRコードを読み取るためのアプリケーションが含まれています。

QRコードを生成するサーブレット

以下のサンプルコードは、URLを基にQRコードを生成し、レスポンスとしてPNG画像を送信するServletです。QRコード生成のためにZXingというライブラリを使用しています。

https://mvnrepository.com/artifact/com.solvoj.zxing-java6/core-java6/3.2.0

https://mvnrepository.com/artifact/com.google.zxing/javase/3.2.0

必要なjarファイル

以下のサーブレットを実行すると上記のQRコードが生成されます。

package controller;

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

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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.qrcode.QRCodeWriter;

/**
 * Servlet implementation class QRCodeServlet
 */
@WebServlet("/QRCode")
public class QRCodeServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String url = "https://saycon.co.jp/"; // 当社のURL

		QRCodeWriter qrCodeWriter = new QRCodeWriter(); // QRCodeWriterオブジェクトを生成
		BitMatrix bitMatrix = null; // BitMatrix型の変数をnullで初期化

		try {
			// urlからQRコードを生成。サイズは200x200ピクセル
			bitMatrix = qrCodeWriter.encode(url, BarcodeFormat.QR_CODE, 200, 200);
		} catch (WriterException e) {
			e.printStackTrace(); // 例外が発生した場合、エラーを出力
		}

		// BitMatrixからBufferedImageに変換
		BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);

		response.setContentType("image/png"); // レスポンスのContent-Typeをimage/pngに設定

		// レスポンスとしてQRコードのPNG画像を送信
		ImageIO.write(image, "PNG", response.getOutputStream());
	}
}

最後までお読みいただきありがとうございます。