Under the Bridge

a Picture of the Late Him

MT4.2:QRコード画像を生成するプラグイン

2008年9月28日 18:14 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

perlの練習がてらに挑戦。

ブログの記事URLなどをQRコード(二次元バーコード)に変換する。このQRコードは、ケータイなどに搭載されているバーコードリーダーで読み取りができる。

下の画像はテストで生成したもの。

qrcode.png

それと、参考に家のテスト用のローカル環境を一応書いておく。

環境を整備する

perlモジュールとしてGD::Barcodeを使用。

うちのローカルマシンのXAMPPにて以下のような操作でモジュールを追加した。

1./xampp/perl/bin/ppm.batをダブルクリックする。GUI版のppmが起動する。

2.GD-Barcodeを右クリックして「Install CD-Barcode 1.15」と出るんでこれをクリック。

20080928-01.png

3.ツールバーの「→」ボタンをクリック

20080928-02.png

4.「こいつをインストールするかい?」と出るのでOKをクリック

20080928-03.png

プラグインの雛形を持ってくる

このへん(http://www.apstars.com/blog/215/post_567.php)に最小単位のプラグイン元があるんで、コピーしてエディタへ貼る。

これを、/xampp/htdocs/mt421ja/pluginsディレクトリ (要は、ローカル環境でのMTのプラグインディレクトリ)へ、「getqrcode.pl」などと名前をつけて保存する。

これで準備OK。

プラグインソースを書き換える

エディタ上でプラグインソースをカリカリ書き換える。

QRコードの生成の最小機能を有したプラグインのソースはこちら。

package MT::Plugin::GetQRCode;
use strict;
use MT::Plugin;
use base qw(MT::Plugin);
our $VERSION = '0.1';
use MT::Template::Context;
use GD::Barcode;

my $plugin = new MT::Plugin::GetQRCode({
    id => 'GetQRCode',
    key => 'get_qrcode',
    name => 'GetQRCode',
    version => $VERSION,
    description => 'GetQRCode',
    author_name => 'apstar',
    author_link => 'http://www.mtde.info/',
});
MT->add_plugin($plugin);

sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        tags => {
            function => {
                'GetQRCode' => \&_hdlr_getqrcode,
            },
        },
    });
    
}

sub _hdlr_getqrcode {
my ($ctx, $args) = @_;
my $url = $args->{url};
my $oGdBar = GD::Barcode->new('QRcode', $url,
{ Ecc => 'L',
ModuleSize=> 2,
Version => 2,
});
open(OUT,">qrcode.png");
binmode OUT;
print OUT $oGdBar->plot->png;
close OUT;
}

1;

上記プラグインでのMTエントリコードの一例

こんな感じでいい。

QRコード生成プラグイン 実験
<MTSetVarBlock name="myurl">
<MTBlogURL>
</MTSetVarBlock>
<br />
<mt:GetQRCode url="$myurl">

(すべてが成功であれば)再構築すれば、mt421jaディレクトリにQRコードがpngファイルで生成されている。

XAMPP+エディタでプラグインを書くときのヒント的なこと

書き換えたら、再構築はちょっと待った。プラグインコードが誤っていたりするとエラーが表示されて、自分の意図しない画面(テンプレートの画面など)に飛ばされて、エントリの画面へ戻るためには地味に時間をとられてしまう。Core2Duo-2.33GHz、メモリ2GBマシンでももっさりしててそんなに速くはない。

そこで、(別タブor別ウィンドウで開いておいた)管理画面の「プラグイン」画面リロードでそのプラグインの読み込みに成功したか失敗したかを見ることができる(読み込みに成功している=コード上は問題が無い(動くかどうかは知らん))し、「ログ」画面でどこにエラーがあるかを表示してくれる。ここでデバッグしていけば、いたずらに再構築するよりずっと早く開発ができる。

邪道かもしれんが。

今後の課題

QRコード画像のURLを自由に指定できると便利だが、なぜだかできなかった。いっぱい試したコードでは動かなかった(画像ができなかった)。環境の問題なのか?なので、今回はQRコード画像のファイル名はプラグイン内へ埋め込んだ、最小単位バージョンとしている。

トラックバック(0)

このブログ記事を参照しているブログ一覧: MT4.2:QRコード画像を生成するプラグイン

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)