Perl で QRcode を作ってみる
業務の都合上、Perl で QRcode を作る必要があったのでそのやり方をメモしとく。
GD::Barcode::QRcode を使って QRcodeを作成する
おそらくこのやり方が、事実上のデファクトスタンダードだと思う。
#!/usr/bin/perl use strict; use warnings; use GD::Barcode::QRcode; my $url = 'http://www.google.com'; my $qr = GD::Barcode::QRcode->new($url, { Ecc => 'M', Version => 3, ModuleSize => 2, })->plot; open my $fh, '>', "qr.gif" or die; print {$fh} $qr->gif; close $fh;
GD::Barcode::QRcode のオブジェクト生成時に指定するパラメータの説明です。
- Ecc
- エラー訂正レベル L(7%) M(15%) Q(25%) H(30%)
- Version
- QRcode のバージョン(1-40) バージョンが上がると使用可能な文字数等が増える
- ModuleSize
- ドットのサイズ(だと思う)
Imager::QRCode を使って QRcode を作成する
libqrencode というライブラリを入れるだけで動作します。GD を入れる必要はないです。
#!/usr/bin/perl use strict; use warnings; use Imager::QRCode; my $qrcode = Imager::QRCode->new( size => 2, margin => 2, version => 1, level => 'M', casesensitive => 1, lightcolor => Imager::Color->new(255, 255, 255), darkcolor => Imager::Color->new(0, 0, 0), ); my $img = $qrcode->plot("http://www.google.com"); $img->write(file => "qr2.gif");
QRcode の色を Imager::Color を使って自由に設定もできるみたいです。使い道があるかはわかりませんが、ちょっとうれしいかも。
QRcode::Barcode::QRcode と Imager::QRCode を取り上げてみたが、業務では前者を採用した。サーバの環境(ソフトウェアも含めて)が古いこともあったので、業務で導入実績のある、GD 系のモジュールを採用する方がいいと今回は判断した。いわゆる、モダンな環境なら後者でも全然ありだと思う。