次のエントリ: ActivePerlでLF(0x0a)単体の出力 [perl]
GD::Barcode::QRcodeでQRコード作成
2006-12-12-1 / カテゴリ: [携帯][win][cygwin][perl] / [permlink]
約1年明けての検証…[2006-01-10-2]
基本
ただし何のオプションも指定しない場合は、デフォルトのQRコードバージョン:1 になり、128bit以上の元データに対して
この状態でエンコードできるデータ量は単純に128/8==16バイトではなく、数値を与えるかasciiを与えるか等で指定可能バイト数が変化する。モジュール内部で対象データを自動判別している模様。
コンストラクタ時にQRコードバージョン・誤り訂正レベル・出力画像サイズが指定できるので、ハッシュのリファレンスでパラメタを与えてやる。
Ecc は誤り訂正レベル
未指定時は M になるっぽい。誤り訂正レベルを上位にすると、符号化できるデータ量は減少する。
Version は QR コードのバージョン
未指定時は1になるっぽい。バージョンをあげると符号化できるデータ量が増加し、画像も細かくなる。バージョン増加に伴い、出力画像のピクセル数も増加する。GD::Barcode::Qrcode では、縦横4ピクセルずつの余白が付加される。
バージョン(n)に対する出力画像の1辺のピクセル数(pixel)は次のよーな感じ。
pixel = 21 + ((n - 1) * 5)
バージョン1で21x21(余白を入れた画像の解像度は29x29)。以降、バージョンを1上げるごとに5ピクセル増加。1から40まで指定可能。
バージョン・誤り訂正レベルの組み合わせによる最大入力サイズはここ。
バージョンを上げると、生成するのにそれなりに負荷がかかる^^;
ModuleSize は出力画像の解像度の指定。余白を含めた画像サイズの倍率になる。未指定時・0指定時は1と同じ。縦横均等。
CGIでブラウザへの出力として使うには、(PNGであれば)HTTPヘッダで "Content-Type: image/png" を吐いて、plot()->png() を出力させれば良い(はず。未確認)。
参考
CPAN: http://search.cpan.org/~kwitknr/GD-Barcode-1.15/Barcode.pm
QRコードの作り方〜バージョンの決定〜: http://www.denso-wave.com/qrcode/qrgene2.html
V603SHのQRコード認識能力はイマイチ。au(BREW3.1)は結構高速…。デコードエンジンのつくりかな…
cpan> install GD::Barcode::QRcode cpan> install GDcygwin環境での GD のビルドには libgd-devel パッケージ(cygwinパッケージ)が必要(gdも?)
基本
use GD::Barcode::QRcode; binmode STDOUT; print GD::Barcode::QRcode->new('foobarbaz')->plot->png;とりあえずこれで、PNGのバイナリが出力される。(結果はリダイレクトする)
ただし何のオプションも指定しない場合は、デフォルトのQRコードバージョン:1 になり、128bit以上の元データに対して
Overflow error. version 1 total bits: 132 max bits: 128とエラーになる(ので使い物にならない)。
この状態でエンコードできるデータ量は単純に128/8==16バイトではなく、数値を与えるかasciiを与えるか等で指定可能バイト数が変化する。モジュール内部で対象データを自動判別している模様。
コンストラクタ時にQRコードバージョン・誤り訂正レベル・出力画像サイズが指定できるので、ハッシュのリファレンスでパラメタを与えてやる。
my $qr = new GD::Barcode::QRcode->new( 'http://www.jp-z.jp/', { Ecc=>'L', Version=>2, ModuleSize=>2} ); print $qr->plot()->png();
Ecc は誤り訂正レベル
レベル | 訂正能力 |
L | 約7% |
M | 約15% |
Q | 約25% |
H | 約30% |
Version は QR コードのバージョン
未指定時は1になるっぽい。バージョンをあげると符号化できるデータ量が増加し、画像も細かくなる。バージョン増加に伴い、出力画像のピクセル数も増加する。GD::Barcode::Qrcode では、縦横4ピクセルずつの余白が付加される。
バージョン(n)に対する出力画像の1辺のピクセル数(pixel)は次のよーな感じ。
pixel = 21 + ((n - 1) * 5)
バージョン1で21x21(余白を入れた画像の解像度は29x29)。以降、バージョンを1上げるごとに5ピクセル増加。1から40まで指定可能。
バージョン・誤り訂正レベルの組み合わせによる最大入力サイズはここ。
バージョンを上げると、生成するのにそれなりに負荷がかかる^^;
ModuleSize は出力画像の解像度の指定。余白を含めた画像サイズの倍率になる。未指定時・0指定時は1と同じ。縦横均等。
CGIでブラウザへの出力として使うには、(PNGであれば)HTTPヘッダで "Content-Type: image/png" を吐いて、plot()->png() を出力させれば良い(はず。未確認)。
参考
CPAN: http://search.cpan.org/~kwitknr/GD-Barcode-1.15/Barcode.pm
QRコードの作り方〜バージョンの決定〜: http://www.denso-wave.com/qrcode/qrgene2.html
V603SHのQRコード認識能力はイマイチ。au(BREW3.1)は結構高速…。デコードエンジンのつくりかな…
Referrer (Inside):
[2007-02-27-1]
次のエントリ: ActivePerlでLF(0x0a)単体の出力 [perl]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12