zentara has asked for the wisdom of the Perl Monks concerning the following question:
#!/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 "<html><body><h1>$tempname.jpg</h1>"; print HT "<table border=0 cellspacing=0 cellpadding=0>"; #putting border=0 in the IMG<> makes it seamless #I have border=1 for demonstration foreach my $row(0..$rows){ print HT "<tr>"; foreach my $col(0..$cols){ print HT "<td><a href= $tempname-$row-$col.html> <IMG SRC=$tempname-$row-$col.jpg border=1 HEIGHT=$y + WIDTH=$x alt=$tempname-$row-$col.jpg></a></td>" } print HT "</tr>"; } print HT "</table></body></html>";
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: pallette problems with GD slicing images
by zentara (Cardinal) on Nov 29, 2003 at 21:48 UTC | |
|
Re: palette problems with GD slicing images
by Dr. Mu (Hermit) on Dec 01, 2003 at 02:48 UTC | |
by zentara (Cardinal) on Dec 01, 2003 at 15:40 UTC |