« XML_Serializerを使ってみよう2 | トップページ | MySQLの文字化け対策 »

2006年11月19日

PHPでQRコードを作ってみよう

今回は、PHPでQRコード作る方法(QRcode Perl CGI & PHP scripts)を紹介します。
動的にQRコードを作れるという事は、PHPやPerl等の動的ページにもページ単位でQRコードを掲載することが可能です。
しかも、そのスクリプトはY.Swetake氏がフリーで配布しています。
フリーで使えるのは私達フリーのプログラマーにとって凄く助かります^^;
注意点:GDが使えることが条件となります。バージョンはGD 1.8.4 またはGD 2.0.10 以上の使用を推奨しています。(swetake.comより)

早速、QRコードを作ってみましょう。
はじめに下記のサイトから「QRcode Perl CGI & PHP scripts」をダウンロードして下さい。
2006年11月19日時点で、バージョンは0.50です。

swetake.com

ダウンロードが終わったら、ダウンロードした圧縮ファイルを解凍して下さい。
次にPHPを動かせるディレクトリ(仮に「home」とします)に、「qr_img」ディレクトリを作ります。
先ほど解凍したファイルの中から「data」「image」「php」の3つのディレクトリを「qr_img」ディレクトリの中に移動します。
最後に「qr_img」ディレクトリと同じ階層に「qr.php」(テスト用のプログラム)空ファイルを作ります。
最終的に以下のような構成になると思います。

[home]
 └─ qr.php
 │
 └─[ qr_img]
  └─ [data]
  └─ [image]
  └─ [php]

※「QRcode Perl CGI & PHP scripts」は6MB程の容量があります。

qr.phpに下記のimgタグを入れて下さい。

<img src="qr_img/php/qr_img.php?d=test">

下記のようにQRコードが生成されると思います。

このQRコードを読み取ると「test」と表示されます。

imgタグのsrc属性に「qr_img/php/qr_img.php」を指定して、引数dにはURLエンコードしたテキストを入れています。
これだけで、QRコードが自動生成されます。
これだけでは味気ないので、プログラマーらしく?動的に生成してみましょう。
qr.phpのimgタグを消して下記のコードに書き換えて下さい。

<html>
<body>
PHPでQRコードを作成する<br>
<form action="qr.php" method="post">
<textarea name="message" cols="50" rows="5"><?php echo $_POST['message']; ?></textarea><br>
<br>
<input type="submit" value="QRコードを作成する">
</form>
<br>
<?php if($_POST['message'] != ""): ?>
作成したQRコード<br>
<img src="qr_img/php/qr_img.php?d=<?php echo urlencode($_POST['message']); ?>">
<?php endif; ?>
</body>
</html>

PHPでQRコードを自動生成する(完成品)

入力フォームに記入した内容をURLエンコードして、srcの引数にセットしています。
引数「d」以外にどのような項目をセットできるのでしょうか。使用可能な引数を一部ご紹介します。

d:QRコード化するデータ(必ずURLエンコードをすること)
s:画像のサイズ(1-40)
マニュアルには1以上と書いてあったのですが、40以上を指定したら画像なしになりました。
t:「J」でJPEGになります。省略した場合はPINGになります。

ちょっとシステムを改造して以下のようなプログラムを作ってみました。

PHPでQRコードを自動生成する(改良版)

画像サイズの変更やJPEG、PINGを選択出来るようにしました。
引数にセットするだけなので、簡単に作れると思います。

引数ももっと沢山の種類がありますので、気になる方はチェックしてみて下さい。
私がPHP使いなので、PHP版を紹介しましたがPerlでも同じ物が作れるようですので興味のある方は調べてみて下さい。

トラックバック

このエントリーのトラックバックURL:
http://www.s-memo.net/mt/mt-tb.cgi/19

コメント

どうも。
この情報、わかりやすくまとめてくれていて凄く助かりました!
ありがとうございました!

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)