QRコードをベクター画像で出力する
書籍や雑誌にQRコードを貼り付けることってよくありますよね。このQRコード、扱いが意外と面倒で、適当にサイズを拡大・縮小すると輪郭がぼやけて正確に読み込めなくなることがあります。
そこで、Perlを使ってQRコードをベクター画像として出力することにしました。「Vector::QRCode::EPS」というモジュールを使えば、簡単にアウトライン化されたEPS形式のQRコードの画像を得られます。
せっかくなのでラッパーモジュールを作ってみました。「make_qr_img」関数に、「QRコードに変換したい文字列」と「QRコードを保存するパス」を渡すだけで、白黒2色のQRコードを作成します。
package QRCodeImg; use strict; use warnings; use utf8; use autodie; use parent qw/Exporter/; our @EXPORT = qw/make_qr_img/; use Vector::QRCode::EPS; sub make_qr_img { my ($qr_info, $path) = @_; my $ps = Vector::QRCode::EPS->generate( text => $qr_info, colour => [0, 0, 0], bgcolour => [255, 255, 255], transparent => 0, size => 10, unit => 'cm', qrcode_options => { version => 1, level => 'M', }, ); $ps->output($path); } 1;
ではワンライナーで実行してみましょう。
$ perl -MQRCodeImg -e 'make_qr_img(q;http://www.google.co.jp;, q;googleQR.eps;)'
こんな感じのQRコードができあがります(そのままだとブログに貼れないのでpng形式に変換しています)。