#!/usr/local/bin/perl # # conv_jpg.pl src_dir dest_dir # # src_dir 以下にある画像ファイル[bmp,jpg,gif,png]を # jpeg 50% に変換してディレクトリ構造はそのままで dest_dir に保存する。 # 実際の変換は ImageMagic にやらせる。 # # Ver.0.01 2004/12/07 # ・新規作成 # # # $RECURSIVE = 1; # ディレクトリの再帰検索を行うか $CONV_PARAM = "-quality 50"; # ImageMagic に渡すパラメータ # $src = shift; $dest = shift; # if ( $src eq "" ) { print "Please set source directory.\n"; exit; } if ( $dest eq "" ) { print "Please set destination directory.\n"; exit; } # push( @dir_entry, "/" ); while ( $dir = pop( @dir_entry ) ) { &dir( $dir ); } # exit; # sub dir { local( $filename, $path, $dirhandle ); $path = $_[ 0 ]; if ( !( $path =~ m#/$# ) ) { $path .= "/"; # 末尾が "/" でなかった時つける } if ( -e $dest.$path ) { } else { mkdir( $dest.$path ); } $dirhandle = $src . $path; opendir( $dirhandle, $src . $path ); # while ( $filename = readdir( $dirhandle ) ) { $ffn = $src . $path.$filename; # フルパスのファイル名 if ( ( $filename eq "." ) || ( $filename eq ".." ) ) { # nop } elsif ( ( $filename =~ /(.*)\.[Bb][Mm][Pp]$/ ) || ( $filename =~ /(.*)\.[Gg][Ii][Ff]$/ ) || ( $filename =~ /(.*)\.[Pp][Nn][Gg]$/ ) || ( $filename =~ /(.*)\.[Jj][Pp][Gg]$/ ) || ( $filename =~ /(.*)\.[Jj][Pp][Ee][Gg]$/ ) ) { $fn = $1; #print $dest.$path.$filename."\n"; system( "convert ".$CONV_PARAM." ".$src.$path.$filename." ".$dest.$path.$fn.".jpg" ); } elsif ( -d $ffn ) { # ディレクトリ if ( $RECURSIVE == 1 ) { #print $src.$path.$filename."\n"; push( @dir_entry, $path . $filename ); } } } closedir( $dirhandle ); } # # スペースとタブを取り除く # sub strip_sp { $_ = $_[ 0 ]; s/\s//g; # スペースを削除 s/\t//g; # タブを削除 return( $_ ); }