QRコードをアプリケーションで作成するには?[C#、VB].NET TIPS

» 2009年06月04日 05時00分 公開
[岸本真二郎デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 携帯サイトへの誘導などでよく使われる「QRコード」だが、.NET Frameworkで利用できるツールとして「Open Source QRCode Library」(以下QRCode Library)がある。

 上記のリンクからダウンロードできるZIPファイルには、複数のプロジェクトからなるソリューションが含まれているが、この中の「QRCodeLib」プロジェクト(ThoughtWorks.QRCode.dll)が、QRコード生成に必要なライブラリである。

 また、同ZIPファイルに含まれるサンプル・プログラム「QRCodeSampleApp」を実行すると、QRコードの作成に必要な4つのパラメータが分かる。

ZIPファイルに含まれるサンプルアプリケーション。
パラメータを変更して、どのようなQRコードが生成できるか確認できる。

 以下に、この4つのパラメータについて簡単に説明する。詳細については、QRコードの開発元である株式会社デンソー ウェーブのサイト「QR Code.com」を参考にしていただきたい。

 まず「Encoding」は「情報の種類(モード)」と呼ばれるもので、コード化するデータのタイプについて、「数字」、「英数字」などを指定する。「Correction Level」は誤り訂正能力を指定する(L/M/Q/H。Lが最低、Hが最高)。「Version」は、QRコードに格納する情報量を決める型番で、1から40までの整数を指定できる。格納するデータが大きい(長い)場合は、より大きなバージョン番号が必要となり、QRコードを構成するセル(点)の数も多くなる。「Size」は、このライブラリがQRコードの画像を生成する際に、1個のセルを何ピクセルで描画するかを指定する。大きくするほど画像全体のサイズは大きくなる。

 QRCode Libraryでは、これらのパラメータをプロパティとしてセットし、コード化したい文字列を引数にしてEncodeメソッドを呼び出すことによって、QRコードが描画されたImageクラス(System.Drawing名前空間)のオブジェクトを戻り値として取得できる。後は、アプリケーション内でImageオブジェクトを画像ファイルとして保存したり、アプリケーション画面に表示したりできる。

 例として、QRコードを作成してファイルに保存するコンソール・アプリケーションを次に示す。このアプリケーションをVisual Studioでビルドするには、プロジェクトでThoughtWorks.QRCode.dllへの参照を追加しておく必要がある。

using System;
using System.Collections.Generic;
using System.Text;

using System.Drawing;
using System.Drawing.Imaging;

using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
using ThoughtWorks.QRCode.Codec.Util;

namespace csGenQRCode
{
  class Program
  {
    static void Main(string[] args)
    {
      QRCodeEncoder qrEnc = new QRCodeEncoder();

      // エンコードは英数字
      qrEnc.QRCodeEncodeMode =
          QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;

      // エラー訂正はM
      qrEnc.QRCodeErrorCorrect =
           QRCodeEncoder.ERROR_CORRECTION.M;

      qrEnc.QRCodeVersion = 7; // バージョン(1〜40)

      qrEnc.QRCodeScale = 4; // 1セルのピクセル数

      Image image;
      // 文字列を指定してQRコードを生成
      image = qrEnc.Encode("http:atmarkit.itmedia.co.jp/");

      // ファイルに保存
      image.Save("C:\\qrcode.png", ImageFormat.Png);
    }
  }
}


Imports System.Drawing
Imports System.Drawing.Imaging

Imports ThoughtWorks.QRCode.Codec
Imports ThoughtWorks.QRCode.Codec.Data
Imports ThoughtWorks.QRCode.Codec.Util

Module Module1

  Sub Main()
    Dim qrEnc As New QRCodeEncoder()

    ' エンコードは英数字
    qrEnc.QRCodeEncodeMode = _
       QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC

    ' エラー訂正はM
    qrEnc.QRCodeErrorCorrect = _
       QRCodeEncoder.ERROR_CORRECTION.M

    qrEnc.QRCodeVersion = 7  ' バージョン(1〜40)

    qrEnc.QRCodeScale = 4  ' 1セルのピクセル数

    Dim image As Image
    '文字列を指定してQRコードを生成
    image = qrEnc.Encode("http:atmarkit.itmedia.co.jp/")

    ' ファイルに保存
    image.Save("C:\qrcode.png", ImageFormat.Png)
  End Sub

End Module

QRコード画像を保存するコンソール・アプリケーション(上:C#、下:VB)

 なお、ダウンロードしたZIPファイルに含まれるプロジェクトはVisual Studio 2005で作成されたものであり、これをVisual Studio 2008用に変換する場合には、変換後のQRCodeLibプロジェクトのリソース・デザイナ・ファイル(Resource.Designer.cs)に次のメソッドを追加する必要がある。

internal static byte[] GetResource(String name)
{
  object obj = ResourceManager.GetObject(name, resourceCulture);
  return ((byte[])(obj));
}

変換後のResource.Designer.csに追加するメソッド

 このファイルはVisual Studioが自動生成するファイルだが、上記のメソッドは、生成されたファイルにQRCode Libraryの作者が手作業で追加しているようだ。

カテゴリ:クラス・ライブラリ 処理対象:画像
使用ライブラリ:Imageクラス(System.Drawing名前空間)

「.NET TIPS」のインデックス

.NET TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。