PDA

Click to See Complete Forum and Search --> : [RESOLVED] imagefill with gif


richy
Sep 20th, 2009, 09:17 AM
I have the below code using GD 2.0.34:

The jpg setting works as expected, but for some reason the gif version isn't filling anything in when outputting but I can't work out why. Anyone got any thing to try as I'm completely out of ideas. Basically all the code should do would be to output the following squares to red.

http://79.170.40.234/richant.co.uk/test.jpg
http://79.170.40.234/richant.co.uk/test.gif



<?php
$type="gif";

$im = imagecreatetruecolor(120,20);
$red = imagecolorallocate($im, 255, 0, 0);

if($type=="jpg")
{
$image = imagecreatefromjpeg('test.jpg');
imagefill($image, 29, 45, $red);

header('Content-type: image/jpeg');
imagejpeg($image);
}
elseif($type=="gif")
{
$image = imagecreatefromgif('test.gif');
imagefill($image, 29, 45, $red);

header('Content-type: image/gif');
imagegif($image);
}
imagedestroy($image);
?>




Thanks in advance.

kows
Sep 20th, 2009, 07:03 PM
well, both of those images just display as a full black, small box. $red is a color assigned to the image $im, and you are creating another image for the jpg/gif called $image. just make sure $red is made for $image (within your if statements) and everything should be alright.

richy
Sep 21st, 2009, 05:33 PM
My mistake. Those images linked to aren't actually hiding the code, but are the images being brought in, but thought it'd be useful incase I'd done something wrong with the images (incorrect amount of colours etc).

The following links should show the difference with the code behind.

http://79.170.40.234/richant.co.uk/imagefilljpg.php
http://79.170.40.234/richant.co.uk/imagefillgif.php

SambaNeko
Sep 21st, 2009, 06:49 PM
Try like this...


<?php
$type="gif";

if($type=="jpg")
{
$image = imagecreatefromjpeg('test.jpg');
$red = imagecolorallocate($image, 255, 0, 0);
imagefill($image, 29, 45, $red);

header('Content-type: image/jpeg');
imagejpeg($image);
}
elseif($type=="gif")
{
$image = imagecreatefromgif('test.gif');
$red = imagecolorallocate($image, 255, 0, 0);
imagefill($image, 29, 45, $red);

header('Content-type: image/gif');
imagegif($image);
}
imagedestroy($image);
?>


Like kows said, in your original code, $red was being allocated for $im, not for $image. Why it then worked for jpg and not for gif, I don't know, but this should work for both.

richy
Sep 22nd, 2009, 01:43 PM
That works perfectly. Thanks very much to you both.