PHPでQRコードを作成する

By nakayama - 09/01/23 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

今回はPHPで任意のURLのQRコードを作成する方法を紹介します。

QRコードの作成のライブラリは有償無償含めて複数有りますが
その中でも無償で有名な「QRcode Perl/CGI & PHP scripts」を使って作成したいと思います。

「QRcode Perl/CGI & PHP scripts」はY.Swetake 氏が公開されているライブラリで
以下のサイトからダウンロード可能です。
http://www.swetake.com/
『バーコード・QRコード → QRcode Perl/CGI & PHP scripts ver. 0.50』
※現在「QRcode Perl CGI & PHP scripts ver. 0.50g 」が最新版になるようです。

設定

設定は極めてシンプルです。

ファイルを解凍しますと以下のファイルが生成されます。

qr

・ファイル構造

  qr_img0.50-+-perl--+- qr_img.cgi
             |       +- qr_image.pl
             |       +- qr_html.pl
             |
             +-data -+- qrvV_N.dat
             |       +- rscX.dat
             |       +- qrvfrV.dat
             |
             +-image-+- qrvV.png
             |       +- b.png d.png
             |       
             +-php  -- qr_img.php

この中のqr_img0.50/php/qr_img.php をブラウザからアクセス出来る場所に置き、
50~56行目に「data」、「image」ディレクトリの場所を指定します。

/* ------ setting area ------ */

$path="./../data";           /* You must set path to data files. */
$image_path="./../image";    /* You must set path to QRcode frame images. */

$version_ul=40;              /* upper limit for version  */  
/* ------ setting area end ------ */

使い方

プログラムにGET変数でパラメータを渡して使います。

例:http://plusmb.jp/qr_img.php?d=http%3a%2f%2fplusmb%2ejp%2f&e=M&s=8&v=4&t=J
としてアクセスすると下記の画像が作成されます。

qr_img

パラメータ設定

qr_img.php?d=data[&e=(L,M,Q,H)][&s=int size][&v=(1-40)][&t=J][&m=(1-16)&n=(2-16)[&o=original data][&p=(0-255)]]

パラメータの設定値には下記の項目があります。
d:QRコード化するデータです。特殊文字や8bit文字はSJISでURLencodeされている
 必要があります。(漢字や’%’は%+16進表記、空白は’+’等)
 容量を超えるとエラー表示となります。
 このパラメータは省略できません。

e:エラー訂正レベル
 エラー訂正レベルを指定します。
 指定できるのはL,M,Q,Hの4種類で省略した場合 M が選択されます。

s:モジュールサイズ
 モジュールサイズを指定します。
 指定できるのは1以上の整数でこの値でイメージのサイズが決定されます。
 省略した場合 4(png) または 8(jpeg) が選択されます。
 htmlモードでは意味を持ちません。

v:バージョン
 バージョンを指定します。
 このプログラムで指定できるバージョンは1~40です。
 省略した場合はプログラムが自動選択します。

t:画像タイプ
 画像タイプを指定します。
 省略した場合や下記文字以外はPNGを出力します。
 Jを指定するとjpegで出力します。
 Hを指定するとhtmlモードで出力します。
 なおjpegでの出力はGDがjpeg対応している必要があります。

注意点

このプログラムは処理が重いですので短期間に繰り返しアクセスされるとサーバーに負荷が掛かります。
.htaccessでアクセス制限を行なうなどフリーライドされない工夫が必要になります。