php_qr-0.1.0.tgz
PHP4/5 用の QRコード生成拡張モジュールです。
インストール方法
通常の PHP 拡張モジュール同様にインストールできます。
tar xfz php_qr-0.1.0.tgz cd php_qr-0.1.0 phpize ./configure --enable-qr make sudo make install
PHP の GD エクステンションを使った GIF, JPEG, PNG, WBMP 出力を有効にするには --enable-qr-gd オプションを使います。
zlib で圧縮した TIFF 出力を有効にするには --with-qr-tiff オプションを使います。
tar xfz php_qr-0.1.0.tgz cd php_qr-0.1.0 if ! -f /path/to/php-install-dir/include/php/ext/gd/libgd/gd.h; then mkdir -p ext/gd/libgd cp /path/to/php-src/ext/gd/libgd/gd.h ext/gd/libgd cp /path/to/php-src/ext/gd/libgd/gdhelpers.h ext/gd/libgd fi /path/to/php-install-dir/bin/phpize ./configure --enable-qr --enable-qr-gd --with-qr-tiff=/path/to/zlib-install-dir --with-php-config=/path/to/php-install-dir/bin/php-config make sudo make install
PHP4/5 共通の機能
以下の関数が提供されます。
string qr_get_symbol(string $data[, array $options]); int qr_output_symbol(mixed $output, string $data[, array $options]); string qrcode(string $data[, array $options]);
qr_get_symbol() は $data を QRコードシンボルに変換して返します。シンボルの生成に失敗したときは false を返します。
qr_output_symbol() の第一引数 $output には出力先のファイル名もしくは書き込み可能なストリームリソースを指定します。$output が空文字列または null の場合は通常の出力バッファに書き込みます。それ以外の場合はエラーとなります。返り値はストリームに書き込まれたバイト数で、失敗したときは false を返します。
qrcode() は qr_get_symbol() のエイリアスです。
$options で符号化および出力の詳細な設定をします。
- version (default: -1)
- mode (default: QR_EM_AUTO)
- eclevel (default: QR_ECL_M)
- masktype (default: -1)
- マスクパターン種別 (1-7)。-1 なら自動選択。
- format (default: QR_FMT_DIGIT)
- magnify (default: 1)
- 1 モジュールあたりの大きさ (1-16)。
- separator (default: 4)
- 分離パターン幅 (0-16)。既定値の 4 は QRコード規格上の下限。
- maxnum (default: 1)
- シンボル数。1 なら通常の QRコード、2 から 16 の場合は構造的連接 (連結コード) を生成する。それ以外はエラー。
- order (default: 0)
- 構造的連接の場合のシンボルの並べ方。0 ならなるべく正方形に近くなるように、正の数なら横に order 個ずつ、負の数なら縦に |order| 個ずつ並べる。多次元配列として出力する JSON では無視される。
使用例
function qr_output_symbol()
<?php !extension_loaded('qr') && (dl('qr.so') || exit(1)); $data = 'QRコードは、株式会社デンソーウェーブの登録商標です。'; $data = mb_convert_encoding($data, 'SJIS-win', 'UTF-8'); $options = array( 'mode' => QR_EM_KANJI, 'format' => QR_FMT_BMP, 'magnify' => 2, ); qr_output_symbol('qr.bmp', $data, $options);
class QRCode
<?php !extension_loaded('qr') && (dl('qr.so') || exit(1)); $data = 'QRコードは、株式会社デンソーウェーブの登録商標です。'; $data = mb_convert_encoding($data, 'SJIS-win', 'UTF-8'); $qr = new QRCode(array('version' => 1, 'maxnum' => 16)); $qr->addData($data, QR_EM_KANJI); $qr->finalize(); $qr->setFormat(QR_FMT_TIFF); $qr->setMagnify(2); $qr->setOrder(-1); $qr->outputSymbol('qr.tiff'); $qr->setFormat(QR_FMT_BMP); foreach ($qr as $pos => $symbol) { file_put_contents(sprintf('qr%d.bmp', $pos + 1), $symbol); }