ASP.NETのWebサイト内でQRコードを表示
まず、実現方法は大きく2つ。
- 外部のAPIをタダ借りする
- 自サイト内のクラスライブラリを使用して呼び出す
前者で有名なのがはてなのQRコード生成APIだろう。
IMGタグで
http://d.hatena.ne.jp/barcode?str=http://www.yahoo.co.jp/
といったように呼び出すだけでQRコードが出来上がる。
今回は有償のサイトなのでそういうわけにもいかないので、後者「自サイト内のクラスライブラリ」を使う事にする。
まずは無料だとありがたいので、探してみると、以下のブログが見つかった。
ASP.NETで利用できるフリーのQRコード生成ライブラリを探し当てました: 35才SE限界説への抵抗記
そこのQR_Encodeに目を付ける。
QRコード | スパイシーソフト [自動組版、InDesignプラグイン、DTP、XML]
しかしメンバー登録が必要なので「ID登録」に行くとリンクエラー。
そこで、
掲示板/有限会社スパイシーソフト
から「ID登録」したら、ページが見つかった。
ダウンロードし、実際にGeneratorのページを作ってみた。
以下、こんな感じ。
using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using QR_Encode_Class; using System.Drawing; using System.Drawing.Imaging; using System.IO; public partial class common_generator_qr : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Response.Buffer = true; Response.Expires = 0; Response.ClearContent(); Response.ContentType = "image/gif"; //QRコードを生成する、元の文字列。URL等を指定する。 string strSource = Request.QueryString["str"]; //不正チェック。Nullの場合、512文字を超える場合。 if (strSource == null) return; if (strSource.Length > 512) return; QR_Encode qr = new QR_Encode(); qr.BackColor = Color.White; qr.ForeColor = Color.Black; int ret = qr.EncodeData(1, 0, false, -1, 3, strSource, null, false, 255, 255); using (MemoryStream ms = new MemoryStream()) { using (Bitmap bitmap = qr.GetBMP) { bitmap.Save(ms, ImageFormat.Gif); } Response.BinaryWrite(ms.ToArray()); } Response.End(); } }
▼k他、MemoryStreamの辺りで参考にしたページ。
楽天が運営するポータルサイト : 【インフォシーク】Infoseek