in reply to Re^2: Images created in a loop grow
in thread Images created in a loop grow

Your example was a little tricky, because of the white transparency, and black rectangles, it all showed up as black on my screen....BUT I did find your problem. What I noticed was the first file was one third the file size of the subsequent files.

Your problem is the truecolor setting. This isn't obvious, it's just that I've seen the question asked before, and had the answer handy. Just look at it as a recipe.

The truecolor spec is a global in the c library, and should be set the way I've shown below. What was happening in your script, (I think :-) )was the truecolor was only being set after the first run through, thus the first file was different. I said GD can be tricky sometimes. :-) Try this

#!/usr/bin/perl use GD; GD::Image->trueColor(1); $maxx = 600; $maxy = 500; for ($x = 0; $x < 10; $x++) { # create a new image undef $im; $im = new GD::Image($maxx+50,$maxy); # not $im->trueColor(1); # allocate some colors $white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0); # make the background transparent and interlaced $im->transparent($white); $im->interlaced('true'); # Put a black frame around the picture $im->rectangle(0,0,$maxx-1,$maxy-1,$black); $im->line(0, $maxy/2, $maxx, $maxy/2, $black); $png_data = $im->png; my $file = "TestImage". $x.".png"; open(DISPLAY,">$file") || die "open failed"; binmode DISPLAY; print DISPLAY $png_data; close DISPLAY; print "Output file = ".$file."\n"; undef $png_data; undef $im; }

I'm not really a human, but I play one on earth. flash japh

Replies are listed 'Best First'.
Re^4: Images created in a loop grow
by gtm (Initiate) on Apr 17, 2006 at 16:40 UTC
    Thanks again for your help. Your solution did the trick!

    George