.NET TIPS

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

デジタルアドバンテージ 岸本 真二郎
2009/06/04

 携帯サイトへの誘導などでよく使われる「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:www.atmarkit.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:www.atmarkit.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の作者が手作業で追加しているようだ。End of Article

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

この記事と関連性の高い別の.NET TIPS
Windowsフォームで簡単に画像を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH