QRコードをswfとして生成するスクリプト
QRコードを生成して、FlashのSWFとしてはき出すスクリプトを書いてみた。
書き出したSWFのサンプルはこちら。
生成時の負荷が大きいので動作サンプルの公開は控えておきます。
スクリプトは非常に簡単。
QRコードの生成は、GD::Barcode::QRcodeでできます。
barcode()メソッドを使うと、QRコードの黒いところは「1」、白いところは「0」のテキストデータして出力してくれます。
SWFの生成は、SWF::Builderモジュールで行います。
このスクリプトができたあと、PDF版を作ろうと思って、PDFJをみていたら、ほぼ同じサンプルが入っていた。
でも、WebでQRコードを生成して、PDFで落とせたら、印刷用とかで需要があるかなぁ。
スクリプトは追記へ
#!/usr/bin/perl
use strict;
use CGI;
use File::Temp;
use SWF::Builder;
use GD::Barcode::QRcode;
use Jcode;
my $q = CGI->new();
my $modulesize=3;
my $qrtext="http://nomadscafe.jp/mt/mt4i.cgi";
my $qrcode=GD::Barcode::QRcode->new(
Jcode->new($qrtext,"euc")->sjis,
{ModuleSize =>1,Version=>4}
)->barcode;
my $movie = SWF::Builder->new(
FrameRate => 15,
FrameSize => [0, 0, 123, 123],
BackgroundColor => 'ffffff',
Version=>6
);
$movie->compress(1);
my $shape = $movie->new_shape->fillstyle('000000')
->linestyle('none')->box(0,0,$modulesize,$modulesize);
my $x=0;
my $y=0;
foreach my $line (split(/\n/,$qrcode)){
$x=0;
foreach my $point (split(//,$line)){
if($point){
my $instance = $shape->place();
$instance->moveto($x*$modulesize,$y*$modulesize);
}
$x++;
}
$y++;
}
my $fh = File::Temp->new(SUFFIX=>'.swf');
$movie->save($fh->filename);
my $swfdat=join("",$fh->getlines);
print $q->header(-length=>length($swfdat),-type=>'application/x-shockwave-flash',-expires=>'now',-pragma=>'no-cache',-cache_control=>'no-cache');
print $swfdat
コメント
需要あります。
今すぐにでも欲しい。
(某クーポンマガジン編集で・・・)
投稿者: topaz | 2004年10月17日 00:36