ホームページ  >  記事  >  Java  >  Javaとサーブレットを使用してQRコードを作成する方法

Javaとサーブレットを使用してQRコードを作成する方法

伊谢尔伦
伊谢尔伦オリジナル
2016-11-26 12:01:101052ブラウズ

スマートフォンのおかげで、QRコードはますます主流になり、ますます便利になっています。バス停、商品パッケージ、ホームセンター、自動車から多くの Web サイトに至るまで、Web ページに QR コードが組み込まれており、人々がすぐに見つけられるようにしています。スマートフォンユーザーの増加に伴い、QRコードの使用が飛躍的に増加しています。

QR コードの概要と Java で QR コードを生成する方法を見てみましょう。

QR コードの紹介

QR コード (クイック レスポンス コード) は、自動車産業向けに最初に設計されたマトリックス バーコード (または QR コード) の一種です。 QR コードは、読み取りが速く、記憶容量が大きいため、自動車業界以外でも人気が高まっています。このパターンは、白い背景に黒い正方形が規則正しく配置されています。エンコードされるデータは 4 つの標準データ (数値、英数字、バイト/バイナリ、漢字) のいずれかになりますが、より多くのデータを実装するために拡張することもできます。

トヨタの子会社であるデンソーウェーブは、生産ライン上の車両を追跡するために 1994 年に QR コードを発明しました。それ以来、QR コードは 2D バーコードの直訳として最もよく使われるようになりました。 QR コードは、コンテンツの高速デコードをサポートするように設計されています。

Java で QR コードを実装する Hello World

Zebra Crossing (ZXing) は、ほぼすべてのプラットフォーム (Android、JavaSE、iPhone、RIM、Symbian) で QR コードを生成および解析するために使用できる優れたツールです。オープン ソース ライブラリです。ただし、単純な QR コードを生成したいだけの場合、それを使用するのは簡単ではありません。

QRGen は ZXing に基づいて開発されており、このライブラリにより Java を使用した QR コードの生成が簡単になります。 ZXing に依存しているため、パターンを生成する場合は ZXing と QRGen の両方の jar パッケージが必要です。

ZXing のダウンロード ページには jar ファイルがありません。ソースコードから自分でコンパイルする必要があります。リンクはここにあります。

zxing-core-1.7.jar (346 KB)

zxing-javase-1.7.jar (21 KB)

QRGen の jar パッケージは公式 Web サイトからダウンロードできます。

それらをクラスパスにインポートし、次の Java コードを実行します:

package net.viralpatel.qrcode;
 
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
 
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
 
public class Main {
    public static void main(String[] args) {
        ByteArrayOutputStream out = QRCode.from("Hello World").to(ImageType.PNG).stream();
 
        try {
            FileOutputStream fout = new FileOutputStream(new File(
                    "C:QR_Code.JPG"));
 
            fout.write(out.toByteArray());
 
            fout.flush();
            fout.close();
 
        } catch (FileNotFoundException e) {
            // Do Logging
        } catch (IOException e) {
            // Do Logging
        }
    }
}

これらのコードは非常に直感的です。 QRCode クラスを使用して QR コード ストリームを生成し、それをバイト ストリームを通じてファイル C:QR_Code.jpg に書き込みます。

QR_Code_Java.zip (339 KB)

この JPEG ファイルを開いて iPhone または Android QR コード ツールでスキャンすると、クールな「Hello World」が表示されます

QRGen API を使用してデータ ストリームを生成する場合を除き、次の API を使用して QR コードを作成することもできます:

// get QR file from text using defaults
File file = QRCode.from("Hello World").file();
// get QR stream from text using defaults
ByteArrayOutputStream stream = QRCode.from("Hello World").stream();
 
// override the image type to be JPG
QRCode.from("Hello World").to(ImageType.JPG).file();
QRCode.from("Hello World").to(ImageType.JPG).stream();
 
// override image size to be 250x250
QRCode.from("Hello World").withSize(250, 250).file();
QRCode.from("Hello World").withSize(250, 250).stream();
 
// override size and image type
QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).file();
QRCode.from("Hello World").to(ImageType.GIF).withSize(250, 250).stream();

Java で Web サイト リンク (URL) の QR コードを生成する

QR コードの最も一般的な用途は、トラフィックをもたらす Web サイトの特定の URL を作成することです。そのため、QR コードは多くの場合、ユーザーが携帯電話のカメラでスキャンしてブラウザで開くことができる URL または Web サイトのアドレスをエンコードします。 URL は QR コードに直接エンコードできます。上記の Hello World の例では、文字列「Hello World」をエンコードする必要がある URL に置き換えるだけです。コード スニペットは次のとおりです:

ByteArrayOutputStream out = QRCode.from("http://viralpatel.net").to(ImageType.PNG).stream();

サーブレットの QR コード

ほとんどの場合、Web サイト上でいくつかの QR コードを動的に生成する必要があります。 Java で QR コードを生成することがいかに簡単であるかを見てきました。ここで、QR コードの生成を Java サーブレットに統合する方法を見てみましょう。

以下は、QRGen および ZXing ライブラリを使用して QR コードを作成する単純な HTTP サーブレットです。 QRコードの内容はユーザーが指定することができます。

index.jsp ファイルには、入力ボックスと送信ボタンを備えた単純な HTML フォームが含まれています。ユーザーはエンコードしたいテキストを入力して送信できます。

index.jsp

<form action="qrservlet" method="get">
 <p>Enter Text to create QR Code</p>
 <input name="qrtext" type="text">
 <input value="Generate QR Code" type="submit">
</form>

秘密は QRCodeServlet.java にあります。ここでは QRGen と ZXing を使用して、request.getParameter から取得したテキストから QR コードを生成します。 QR コード ストリームが生成されたら、それを応答に書き込み、適切なコンテンツ タイプを設定します。

QRCodeServlet.java

package net.viralpatel.qrcodes;
 
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import net.glxn.qrgen.QRCode;
import net.glxn.qrgen.image.ImageType;
 
public class QRCodeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
 
        String qrtext = request.getParameter("qrtext");
 
        ByteArrayOutputStream out = QRCode.from(qrtext).to(ImageType.PNG).stream();
 
        response.setContentType("image/png");
        response.setContentLength(out.size());
 
        OutputStream outStream = response.getOutputStream();
 
        outStream.write(out.toByteArray());
 
        outStream.flush();
        outStream.close();
    }
}

web.xml を使用して /qrservlet リクエストを QRCodeServlet.java にマップします。

web.xml

rree
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。