読者です 読者をやめる 読者になる 読者になる

さわだのノート

書籍のお仕事に役立つかもしれない思いつきを記録しています。

RSS: 記事の更新情報 Rss Feed

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形式に変換しています)。

f:id:takepierrot:20140702142951p:plain