WindowsでもMacでもLinuxでもOK! PerlでさくっとQRコードを作ろうぜ
昔、Android関連の書籍でQRコードをひとつずつ手作業で作っていたことがあります。
刺身にタンポポをのせるのと同じような、なんだかむなしい感覚に襲われました。
結局その後はPowerShellとコマンドラインで使えるQRコード作成アプリを組み合わせて何とかしのぎました。Windowsはこうした細かなアプリが充実しているのが本当にすばらしい。
それで今回、またQRコードを作る必要が出てきました。しかし現在の作業環境はMacなので、Windows用のソフトウェアは利用できません。
というわけで、PerlでQRコードが作れる方法を探ってみました。
「Imager::QRCode」というのが結構よさそうなモジュールもあるようなのですが、
Imager API version incorrect loaded 5 vs expected 4
こんなエラーが出てきて動いてくれる気配がなかったので、今回は却下としました。
再度ググってみると、GoogleさんがQRコードを自動生成するAPIを提供してくれているみたいです。GETリクエストでPNG形式の画像を作ってくれるみたいですね。
Google Chart Tools: Infographics - Infographics (Deprecated) — Google Developers
ベースのURLはこちら。
https://chart.googleapis.com/chart
パラメーターの設定は下記のようになっております。
パラメータ | 必須? | 説明 |
---|---|---|
cht=qr | 必須 | QR codeを指定 |
chs= |
必須 | 画像のサイズ。幅と高さは同じに |
chl= | 必須 | QRコードに変換する情報。URLエンコードしとく |
choe= |
自由 | デフォルトがutf-8なので放っておく |
chld= |
自由 | エラーレベルとマージン。エラーレベルはMに |
あとはGETリクエストを送って取得したデータを保存すればOKですね。
できあがったコードがこちら。
#!/usr/bin/perl use strict; use warnings; use utf8; use open IO => qw/:utf8 :std/; use autodie qw/open close/; use URI; use LWP::Simple qw/get/; my $uri = URI->new('https://chart.googleapis.com/chart'); my $qr_info = 'https://play.google.com/store/apps/details?id=com.intsig.camscanner'; $uri->query_form( cht => 'qr', chs => '500x500', chl => $qr_info, chld => 'M|2', ); my $data = get($uri); open my $out, '>:raw', 'sample.png'; print $out $data;
インターネットに接続しないと使えないし、やり過ぎると制限されるかもしれないし、そもそもローカルでやるより絶対遅いしで、いろいろと微妙な感のあるコードですが、手作業でひとつずつ作っていくよりはまあましかな。
Imager::QRCodeが普通に使えるのがいちばんなんですけどね。