MT4.2:QRコード画像を生成するプラグイン
perlの練習がてらに挑戦。
ブログの記事URLなどをQRコード(二次元バーコード)に変換する。このQRコードは、ケータイなどに搭載されているバーコードリーダーで読み取りができる。
下の画像はテストで生成したもの。
それと、参考に家のテスト用のローカル環境を一応書いておく。
- OS:WindowsVista Home Premium
- CPU:Intel Core2Duo 2.33GHz
- 搭載メモリ:2GB
- XAMPP 1.6.7 for Windows
- Perl 5.8.9 - mod_perl 2.0.4アドオンパッケージ
環境を整備する
perlモジュールとしてGD::Barcodeを使用。
うちのローカルマシンのXAMPPにて以下のような操作でモジュールを追加した。
1./xampp/perl/bin/ppm.batをダブルクリックする。GUI版のppmが起動する。
2.GD-Barcodeを右クリックして「Install CD-Barcode 1.15」と出るんでこれをクリック。
3.ツールバーの「→」ボタンをクリック
4.「こいつをインストールするかい?」と出るのでOKをクリック
プラグインの雛形を持ってくる
このへん(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コード画像のファイル名はプラグイン内へ埋め込んだ、最小単位バージョンとしている。
- カテゴリ:215プラグイン関係
トラックバック(0)
このブログ記事を参照しているブログ一覧: MT4.2:QRコード画像を生成するプラグイン
このブログ記事に対するトラックバックURL:
- Categories
- Entries
-
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.5)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.4)
- memo:perlでプラグイン Image::ExifとImage::Info
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.3)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(Ver0.2)
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(GPS Ready)
- MT4:エントリのURLをQRコードで自動生成する
- MT4.2:QRコード画像を生成するプラグイン(改)
- 嵌りメモ(perlのxampp環境でのファイル吐き出し実験)
- MT4.2:QRコード画像を生成するプラグイン
- MT4.2:JPEGファイルのEXIF情報を取得するプラグイン(失敗)
- 管理画面を拡張する(メニューとメソッド追加)
- MT4.1:追加したファンクションタグのみへモデファイア追加
- MT4.1:エントリの既存DBへアクセスしてデータ取得
- MT4.1:MTの計算機能を拡張するプラグイン(CalcExp)開発の話
- MT4.1:MTの計算機能を拡張するプラグイン(CalcExp)配布
- MT4.1:営業日(休日)をイッパツで表現するカレンダープラグイン(改)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(プラグイン設定編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(ブログ毎編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(カテゴリ編)
- MT4.1:プラグイン作成におけるDBへのフィールド追加について(エントリ編)
- MT4.1:カテゴリの並べ替え(オリジナルプラグイン+ハッシュ変数)
- サンプルプラグインを手入力した(AddField)
- MT4.1:営業日(休日)をイッパツで表現するカレンダープラグイン
- サンプルプラグインを手入力した(RandomEntry)
- 最小単位のプラグインを生成するサンプル(ファンクション、ブロック、モデファイア、コールバック)
コメントする