Skip to main content.

Thursday, July 05, 2007

PHPでのQRコード画像出力

PHPでのQRコード画像出力のサンプルです。今回は、フリーソフトとして公開されている、Y.Swetake氏作ライブラリ「QRcode Perl/CGI & PHP scripts ver. 0.50g」を利用します。

QRコードとは、もちろん御存知の方も多いかとは思いますが、株式会社デンソーが開発した2次元コードの一種です。(※詳細は関連サイトを参照して下さい。)携帯電話のカメラを利用してテキスト情報を取り込むという方法は、既に一般的に広く利用されている方法かと思います。

ここでは、PHPで任意の文字列をQRコード画像として出力してみます。今回利用するライブラリは以下のサイトから入手可能です。今回使用したのは、「QRcode Perl/CGI & PHP scripts ver. 0.50g」です。展開すると、data、image、perl、phpの各ディレクトリとREADMEファイルが展開されます。今回はPHPなので、perl以外のディレクトリをサーバに配置して準備完了です。
swetake.com(QRコード・バーコード)

使い方は、qr_img.phpにパラメータを指定して呼び出します。パラメータは、QRコード化するデータ(文字列)の他に、エラー訂正レベル、モジュールサイズ、バージョン、画像タイプ等です。(※詳細はライブラリに付属のREADMEファイルを参照して下さい。)最も単純な使い方としては、以下のようにimgタグで、直接パラーメータを指定する方法でしょうか。実際の画像(PNG形式)は以下のようになります。

<img src="http://サイト/qr_img.php?d=http://www.independence-sys.com&t=P&s=4">

http://www.independence-sys.com/を表すQRコード

次に任意の文字列のQRコード画像(PNG形式)を出力するフォームとスクリプトです。ここでは、文字列の他に見た目ですぐに分かるサイズを指定出来るようにしています。日本語も指定可能ですが、シフトJISコードに基づいたデータ列を渡す必要があります。

任意の文字列のQRコード画像出力
データ

画像サイズ

フォームのソース
<html>
<head><meta http-equiv="content-type" content="text/html;charset=euc-jp"></head>
<body>

データ
<form name="frm_qr" method="GET" action="ex1out.php">
<input type="text" name="data" size="40" maxlength="30" value="(何か入力して下さい)">

<br>画像サイズ
<select name="size">
<option>1
<option>2
<option>3
<option selected>4
<option>5
</select>
<input type="submit" value="QRコード表示">
</form>

</body>
</html>

出力のスクリプトのソース
<?php
$data = $_GET[data];
$size = $_GET[size];
$datasjis = mb_convert_encoding($data,"SJIS","EUC-JP");
$data_enc = urlencode($datasjis);

print "<html>";
print "<body>";

$imgurl = "<img src=\"php/qr_img.php?d=" . $data_enc . "&t=P&s=" . $size . "\">";

print $imgurl;

print "</body>";
print "</html>";
?>



ここでは基本的な使い方のみですが、例えばですが、以下の参考サイト(ITproサイト)に、もう少し応用的な使い方等いろいろ紹介されています。

関連サイト
swetake.com(QRコード・バーコード)
QRコードドットコム

参考サイト
PHPでQRバーコードを作成する(その1):ITpro
PHPでQRバーコードを作成する(その2):ITpro

参考書籍
UNIX USER 2005年2月号(※UNIX USERは現オープンソースマガジン)

Webプログラミング関連記事