#!/usr/bin/perl use warnings; use strict; use GD; my @tiles = (); my $file = shift or die "need filename\n"; my $tempname = $file; $tempname =~ s/^(.+)(\.\w+)$/$1/; print "$tempname\n"; #set tile size my $x = 100; my $y = 100; #truecolor with 1 instead of 0, looks better #but some tile pallettes might get screwed up #safer with 0 my $image = GD::Image->newFromJpeg($file,0); my ($width,$height) = $image->getBounds(); print "width->$width height->$height\n"; #$image->trueColorToPalette(); #dosn't help much #you can experiment my $rows = int($height/$y +1) - 1; #make it 0 based my $cols = int($width/$x + 1) - 1; print "rows->$rows cols->$cols\n"; foreach my $row(0..$rows){ foreach my $col(0..$cols){ my $imageout = new GD::Image($x,$y); #$image->copy($sourceImage,$dstX,$dstY, # $srcX,$srcY,$width,$height) $imageout->copy($image,0,0,($col*$y),($row*$x),$x,$y); my $tilename = $tempname .'-'.$row.'-'.$col.'.jpg'; push(@tiles,$tilename); open(OUT, '>', $tilename) or warn $!; print OUT $imageout->jpeg; close OUT; } } ###################################################################### #make an html page with tiles reassembled and clickable open(HT,">$tempname-jpg.html") or warn $!; print HT "
![]() | "
}
print HT "