eviltom has asked for the wisdom of the Perl Monks concerning the following question:
Did perl can spilt multi-page tiff file to individual pages per file as the below code"i seek before for count page" in case, i would like to use the perl to spilt the tiff file, but it seems no way. would you like to help? thank a lot.
use strict; my @files = glob "D:/pics/tiff/*.tif"; for (@files){ my $images = imagecounter($_); printf "%40s : %3d \n", $_, $images; } sub imagecounter{ my $tiff = shift; my @endian; my $offset = 0; my $index; my $count = 0; open (my $fh, "<", $tiff); binmode $fh; seek ($fh, $offset, 0); read ($fh, $endian[0], 2); $endian[0] = unpack "a2", $endian[0]; if ($endian[0] eq 'II'){ $endian[1] = 'v'; $endian[2] = 'V'; }elsif ($endian[0] eq 'MM'){ $endian[1] = 'n'; $endian[2] = 'N'; }else{ warn "Unknown byte order in $tiff, possible bad file\n"; return 0; } seek ($fh, 4, 0); read ($fh, $offset, 4); $offset = unpack "$endian[2]", $offset; while ($offset){ $count++; my $length; seek ($fh, $offset, 0); read ($fh, $length, 2); $length = unpack "$endian[1]", $length; $index = ($length * 12); seek ($fh, $index, 1); read ($fh, $offset, 4); $offset = unpack "$endian[2]", $offset; if ($count > 100){ warn "Count too high in $tiff, possible bad file\n"; return 0; } } close $fh; return $count; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: help;Splitting the TIFF image into individual pages
by zentara (Cardinal) on Feb 19, 2010 at 13:13 UTC | |
|
Re: help;Splitting the TIFF image into individual pages
by Anonymous Monk on Feb 19, 2010 at 07:31 UTC | |
|
Re: help;Splitting the TIFF image into individual pages
by hangon (Deacon) on Feb 19, 2010 at 19:04 UTC |