PHPでちょっと奥に突っ込んだQRコード生成
今更ながら、な記事かもしれませんが。
PEARパッケージ「Image_QRCode」でQRコードを生成出来ます。
よく出回ってるサンプルソース。
Image_QRCode
http://pear.php.net/package/Image_QRCode/download
<?php require_once("Image/QRCode.php"); $qr = new Image_QRCode(); $qr->makeCode("Hello, world"); ?>
特に何も意識せず使う分には上記で十分です。
オプションを加えて少し出力に変化を持たせたい場合はこちら
<?php require_once("Image/QRCode.php"); $qr = new Image_QRCode(); $option = array( "module_size"=>2, //サイズ=>1〜19で指定 "image_type"=>"jpeg", //画像形式=>jpegかpngを指定 "output_type"=>"display", //出力方法=>displayかreturnで指定 returnの場合makeCodeで画像リソースが返される "error_correct"=>"H" //クオリティ(L<M<Q<H)を指定 ); $qr->makeCode("Hello, world",$option); ?>
連結QRコードも作れる
連結QRコード。あんまり聞き慣れないと思いますが
簡単に言えばQRコードを分割して読み込んで一つのデータとして読み取る方法です。
↑と↓三つを読み込んだデータは同じです。連結データは読み込む順番もバラバラでも構わないです。
利用方法
オプションとしてもたせられる値は4つ。
-
- nの値で何分割するかを指定、
- mの値で今何分割目のデータを出力かを指定、
nとmは必須となるでしょう。
-
- parityで属性を指定(同じ属性値を持たせないと関連付けられたものとみなさい→読み取りエラー)
ここは省略可能です。
-
- originaldataで元データ。こっちも同じ値をもたせないよ読み取りエラーに。 詳細は不明。
これも省略可能。
"n"=>3, //データを分割する数(この場合3分割)
"m"=>1, //何分割目か(3分割中1つ目のデータとして出力)
"parity"=>"", //属性(無指定)
"originaldata"=>"" //元データ(無指定)
3分割中1つ目のデータを吐き出す
<?php require_once("Image/QRCode.php"); $qr = new Image_QRCode(); $option = array( "module_size"=>2, "image_type"=>"jpeg", "output_type"=>"display", "error_correct"=>"H" ); $append=array( "n"=>3, //データを分割する数 "m"=>1, //何分割目か ); $qr->makeCode("Hello, world",$opption,$append); ?>
3分割中2つ目のデータを吐き出す
<?php require_once("Image/QRCode.php"); $qr = new Image_QRCode(); $option = array( "module_size"=>2, "image_type"=>"jpeg", "output_type"=>"display", "error_correct"=>"H" ); $append=array( "n"=>3, //データを分割する数 "m"=>2, //何分割目か ); $qr->makeCode("Hello, world",$opption,$append); ?>
3分割中3つ目のデータを吐き出す
<?php require_once("Image/QRCode.php"); $qr = new Image_QRCode(); $option = array( "module_size"=>2, "image_type"=>"jpeg", "output_type"=>"display", "error_correct"=>"H" ); $append=array( "n"=>3, //データを分割する数 "m"=>1, //何分割目か ); $qr->makeCode("Hello, world",$opption,$append); ?>
簡単ですね!