この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
携帯サイトへの誘導などでよく使われる「QRコード」だが、.NET Frameworkで利用できるツールとして「Open Source QRCode Library」(以下QRCode Library)がある。
上記のリンクからダウンロードできるZIPファイルには、複数のプロジェクトからなるソリューションが含まれているが、この中の「QRCodeLib」プロジェクト(ThoughtWorks.QRCode.dll)が、QRコード生成に必要なライブラリである。
また、同ZIPファイルに含まれるサンプル・プログラム「QRCodeSampleApp」を実行すると、QRコードの作成に必要な4つのパラメータが分かる。
以下に、この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
なお、ダウンロードした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));
}
このファイルはVisual Studioが自動生成するファイルだが、上記のメソッドは、生成されたファイルにQRCode Libraryの作者が手作業で追加しているようだ。
カテゴリ:クラス・ライブラリ 処理対象:画像
使用ライブラリ:Imageクラス(System.Drawing名前空間)
Copyright© Digital Advantage Corp. All Rights Reserved.