質問掲示板

CGIなどのの質問を受付ます。
現在SPAM対策の為、一部ホストアドレスを規制中。

新規発言一覧最新記事過去一覧 | 検索HOME

スレッド

└◇1145:
アニメーションGIFのチェックのルーチンその後 [うしわか] 07/21 22:45

 └◇1146:Re:アニメーションGIFのチェックのルーチンその後 [うしわか] 07/21
  └◇1148:Re[2]:アニメーションGIFのチェックのルーチンその後 [moon★] 07/22
   └◇1149:Re[3]:アニメーションGIFのチェックのルーチンその後 [うしわか] 07/22 <


1145● アニメーションGIFのチェックのルーチンその後[ うしわか ] 2008 07/21 22:45
以前、質問したですが。最終的には
アップロードする画像ファイルがアニメーションGIFで指定したサイズ以上ならばリサイズしてサムネイルを作るというものを実現して見ました。
しかし、非常に重くサーバーの負担があると思われます。
ぜひ、アドバイスをお願いします。

$ws=200;
$wh=200;

if($ck_anigif){
&anigif_resize($imgfile,$outimgfile,$ws,$hs);
}


#アニメーションGIFのチェック
#アニメーションGIFなら$gflg="yes"違うなら""を返す
sub gif_check {

my ($tail,$imgfile) =@_;
my $gflg ="";
my $ch=0;

    if( $tail eq ".gif" ){
            open(IN,"identify $imgfile |");
            @output = <IN>;
            if ( @output > 1 ){
                foreach (@output) {
                if (/Class/) { $ch++; last; }
            }
            if ($ch) { $gflg ="yes"; } else { $gflg =""; }
            }
    }
    
    
    return ($gflg);
}
#アニメーション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");

    #return ($gflg);
}
スレッド一覧


1146● Re:アニメーションGIFのチェックのルーチンその後[ うしわか ] 2008 07/21 22:48
すいません。
一番上に
$ck_anigif=&gif_check($tail,$imgfile);
が抜けていました。
スレッド一覧


1148● Re[2]:アニメーションGIFのチェックのルーチンその後[ moon★ ] 2008 07/22 11:03
以下修正してみたもの。
テストではそこそこ早かったが・・・


$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での処理時間があるので、これ以上は焼くならないと思います。
とりあえずエラーが出ないように作って、だめなら他の方法(他のモジュールや自作するなど)を考えるしかないでしょう。
スレッド一覧


1149● Re[3]:アニメーションGIFのチェックのルーチンその後[ うしわか ] 2008 07/22 14:13
おお〜おかげで目に見えて処理が軽くなったようです。
感謝m(_ _)m
スレッド一覧

CGIROOM