ログイン TOPに戻る
PHPでQRコード作成と言えば
http://www.swetake.com/qr/qr_cgi.html
が超有名なんだけど、

今回は趣向を変えて、
libqrencode版
http://megaui.net/fukuchi/works/qrencode/index.html
を作って見ました。

サンプルはこちら

■メリット
車輪の再発明ではあるんですが、、、

・libqrencodeというCで出来た軽量のライブラリを使用する。
・GDがいらない。(画像を作らなければ)
・漢字モードが使える

などがメリットです。


■使い方。
例によって、pecl-codegenを使ってPHP拡張を作りました。

まずは、ともかく
libqrencodeをインストール。
http://megaui.net/fukuchi/works/qrencode/index.html

./configure
make
make install

そして、
qrencode-0.0.1.tar.gz
php-qrencode-0.0.2.tar.gz
(ちょい修正、20070409)
をダウンロードして

tar xvfz qrencode-0.0.2.tar.gz
cd qrencode-0.0.2
phpize
./configure
make
make install

あとは、php.iniに

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"
extension=qrencode.so

などとして下さい。


これで、qrencode()という関数が使えるようになります。

使い方は、

<?
$str = "ABCDEFG";
$qrdata = qrencode($str,3,QR_ECLEVEL_M,QR_MODE_8);
?>
<html>
<head>
<style>
.qr_line{
    clear:both;
    overflow:hidden;
    height:4px;
}
.qr_line b{
    background:#fff;
    width:4px;
    height:4px;
    float:left;
    overflow:hidden;
}
.qr_line i{
    background:#000;
    width:4px;
    height:4px;
    float:left;
    overflow:hidden;
}
</style>
</head>
<body>
<?foreach($qrdata as $row){?>
<div class="qr_line">
<?foreach($row as $cell){?>
<?=($cell=="0")?"<b></b>":"<i></i>"?>
<?}?>
</div>
<?}?>
?>

こんな感じ。
$qrdataに、1や0が沢山はいった二次元配列が帰ってきますので、
画像にするなり、テーブルを作るなり、CSSで書くなり、
好きにして下さいませ。
1が黒いところ、0が白いところです。

qrencode関数は、
$ret = qrencode(文字列,バージョン,誤り訂正レベル,モード);
となってます。

引数は、

1.QRコードに入れたい文字列
2.バージョン、QRコードのサイズです。大きくするとドットが4つづつ増えます。
 小さくしても、文字があふれると自動で大きくなるようです。
3.誤り訂正レベル4段階
    QR_ECLEVEL_L  復元能力7%
    QR_ECLEVEL_M  復元能力15%
    QR_ECLEVEL_Q  復元能力25%
    QR_ECLEVEL_H  復元能力30%
  復元能力が高くなると入れれる文字列が減ります。
4.モード
    QR_MODE_NUM   数字モード
    QR_MODE_AN    英数字モード
    QR_MODE_8     バイナリモード
    QR_MODE_KANJI SJIS漢字モード

です。

以上、うまく動いたら是非教えてくださいませ!!

コメントの一覧
中山 さん 4/9 10:11
こんにちは。アルファの中山です。

QRコードですね!libqrencode版なんてあるんですね~。

最近はカラーコードを使って何かやりたいという

要望を良く聞きますよ~。

http://www.colorzip.co.jp/ja/
ひろかわです。 さん 4/9 12:15
中山さん

こんにちは!

へぇ、カラーコードですか。
いろんなのがあるんですねぇ。
専用のリーダをダウンロードして使うんですね。

画像認識と組み合わせて、独自の「なんちゃらコード」を作っちゃうのも面白いかもですねぇ。

情報がありがとうございました。
あーる さん 4/16 11:58
これも面白いですね。
うちのサーバーにも入れてみようかと思います。
で、QRといえば、こんなのもありますよ。
http://kazina.com/qr/index.html

あーる さん 4/16 12:04
libqrencodeのtarボールの名前が「qrencode-1.0.2.tar.gz」で、
ひろかわさんのエクステンションのtarボールが「qrencode-0.0.2.tar.gz」で、
バージョン以外が同じなので、ちょっと混乱しそうですね。
ローカルで変えてもいいのですが、バージョンアップされたときとか、
分かりにくくなるので、できたらエクステンションのtarボールの名前を
変えてもらうと嬉しいです。
ひろかわです。 さん 4/16 20:28
あーるさん

こんにちは。
確かに、名称がわかりにくいですね、
変えて置くように致します。

http://kazina.com/qr/index.html
これはなかなか、良いアイデアですね。
結構無理やりな仕様ではありますが、
エラー補正機能を自前で用意しているんだから有りかなぁ
とも思います。

これもつくってみようかな。
upk さん 6/6 00:13
Fedora 7 用に、rpm 化しました。どうぞ、ご利用下さい。
ひろかわ さん 6/15 09:39
upkさん

rpm化ありがとうございます。
ありがたく利用させて頂きます。
nori さん 11/13 16:35
こんにちは
php-qrencode-0.0.2.tar.gzをダウンロードしてみたのですが
展開しようとすると「tar アーカイブではないようです」と出てしまいます。
なにか処理に問題があるのでしょうか?
よろしくお願いします

ひろかわ さん 11/14 23:40
noriさん

アーカイブの解凍はどうされていますでしょうか?

linux上で、

tar xvfz php-qrencode-0.0.2.tar.gz

で、解凍出来ると思います。
おためし下さい。
コメントはこちらから
名前:
通信:
※オーナーにのみ表示されます。(mail やホームページのurl等ご入力ください)
本文:
トラックバックはこちらから
トラックバックURL: