Tiffファイルを剥いでJPGファイルにするスクリプト


@dirs = ;
for( $n = 0; $n < @dirs; ++$n ){
if( -d $dirs[ $n ] ){
MkFolder( $dirs[ $n ] );
}
}

sub MkFolder {
my $tDir=@_[0];
my $dstDir = "jpg-$tDir";
mkdir( $dstDir );
chdir("$tDir/00000001");
while(<*.tif>){
/([^\.]*)\.tif/i;
splitTiffToJPG( $_, "../../$dstDir/$1.00.jpg" )
}
chdir('../..');
}

sub splitTiffToJPG {
my( $fsize, $n, $ifdBuff, $ifdc, $tid, $tpos );
my( $src, $dst ) = @_;
$fsize = -s $src;
print "$src -> $dst $fsize ";

open( IN, $src );
binmode IN;
seek( IN, 8, SEEK_SET );
read( IN, $ifdBuff, 2 );
$ifdc = unpack( "s", $ifdBuff );
$tpos = 0;
for( $n = 0; $n < $ifdc; ++$n ) {
read( IN, $ifdBuff, 2 );
$tid = unpack( "S", $ifdBuff );
read( IN, $ifdBuff, 2 );
read( IN, $ifdBuff, 4 );
read( IN, $ifdBuff, 4 );
if( $tid == 513 ) {
$tpos = unpack( "I", $ifdBuff );
print " $tpos\n";
break;
}
}

if( $tpos ){
seek( IN, $tpos, SEEK_SET );
read( IN, $ifdBuff, $fsize - $tpos );
if( open( OUT, ">$dst" ) ) {
binmode OUT;
print OUT $ifdBuff;
close OUT;
}
}
}