PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2006-08-12

[]QRコードを作成する

QRコードを作成するフリーのライブラリ

.NET用のQRコードを作成するライブラリを探していた所、QRImageというフリーのライブラリを見つけました。

QRImage

QRImageは有限会社スパイシーソフトさんがフリーで公開されているライブラリで、任意の文字列をQRコードの画像に変換することができます。出力画像フォーマットは、bmp, png, jpg, tif, gif, exifに対応しています。

QRコードを作成する

今回は、このライブラリを用いてPowerShellでQRコードを作成してみます。

STEP1:準備
  1. 以下から「qrimage.zip」をダウンロードします。
    http://www.vector.co.jp/soft/dl/winnt/writing/se345269.html

  2. qrimage.zip解凍し、QR_Encode.dllを任意のディレクトリに配置します。
    今回は「C:\lib\QR_Encode.dll」に配置しました。

QRコードを作成する準備はこれだけです。

STEP2:スクリプト作成

以下の手順でQRコードを作成します。

  1. QRコード作成クラスライブラリQR_Encode.dll)を読み込む

  2. QRコード作成クラス(QR_Encode)を生成する

  3. QRコードの「背景色」「前景色」を設定する。

  4. QRコードを生成する「EncodeData」メソッドをコールする。

サンプルスクリプト

パラメータ

背景色/前景色は白/青、表示倍率は3、変換文字列は以下で作成してみます。

PowerShell Memo
http://d.hatena.ne.jp/newpops/
サンプルスクリプト
# QRコード作成クラスライブラリを読み込む
[void][Reflection.Assembly]::LoadFrom("C:\lib\QR_Encode.dll")

# QRコード作成クラスを生成する
$qr = new-object QR_Encode_Class.QR_Encode

# QRコードの背景色/前景色
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
$qr.BackColor = [System.Drawing.Color]::White
$qr.ForeColor = [System.Drawing.Color]::Blue

# 表示倍率
$scale = 3

# QRコードに変換する文字列
$newLine = [System.Environment]::NewLine
$encString = "PowerShell Memo"
$encString += $newLine
$encString += "http://d.hatena.ne.jp/newpops/"

# QRコードの出力ファイル名パス
$outputPath = "C:\QR_PowerShellMemo.gif"

# QRコードを生成
$ret = $qr.EncodeData( `
1, 0, $false, -1, $scale, $encString, $outputPath, $false, 255, 255)

※クラスライブラリの詳細仕様はqrimage.zipに含まれる資料を参照ください。

出力されたQRコード

f:id:newpops:20060812211401g:image

さっそく、携帯のバーコードリーダで読み込んでみましたが、問題なく、

PowerShell Memo
http://d.hatena.ne.jp/newpops/

と読み取れました。(^^)


注意点

QRコードに変換する文字列に改行を含める場合、HereStringを用いるとバーコードリーダが改行を読み取れませんでした。

※HereStringについてはHereString - PowerShell Memoを参照

改行を含める場合は定数である[System.Environment]::NewLineを用いる必要があるようです。