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