以下修正してみたもの。
テストではそこそこ早かったが・・・
$imgfile = 'hoge.gif';
$outimgfile = 'out.gif';
$tail = '.gif';
$ws=200;
$hs=200;
if(&gif_check($tail,$imgfile)){
&anigif_resize($imgfile,$outimgfile,$ws,$hs);
}
#アニメーションGIFのチェック
sub gif_check {
my ($tail,$imgfile) =@_;
if( $tail eq ".gif" ){
open(IN,"identify $imgfile |");
@output = <IN>;
close(IN);
if ( @output > 1 ){
return(1);
}
}
}
#アニメーションGIFのリサイズ
sub anigif_resize{
my($imgfile,$outimgfile,$tn_w,$tn_h)=@_;
my $option=" -coalesce -resize " .$tn_w .'x' .$tn_h ." -deconstruct";
# ImageMagickのconvertコマンド呼び出し
system ("convert $imgfile $option $outimgfile");
}
直したところ
・余計な変数などは使わないようにした
・$option のところの サイズ指定にスペースが入っているとエラーになるので、それを修正。
ImageMagickを使う場合、ImageMagickでの処理時間があるので、これ以上は焼くならないと思います。
とりあえずエラーが出ないように作って、だめなら他の方法(他のモジュールや自作するなど)を考えるしかないでしょう。
|