Tutaj widzę że wysyłasz 'Content-Type' jako typ używasz 'image/gif' czyli obraz GIF, a tworzysz obraz w formacie PNG?
Dla formatu PNG:
header('Content-Type: image/png'); $im = imagecreatefromjpeg($file);
// Output and free memory
imagepng($im);
imagedestroy($im);
Dla formatu Jpeg:
header('Content-Type: imagejpeg'); $im = imagecreatefromjpeg($file);
// Output and free memory
imagejpeg($im);
imagedestroy($im);
Dla formatu GIF:
header('Content-Type: image/GIF'); $im = imagecreatefromjpeg($file);
// Output and free memory
imagegif($im);
imagedestroy($im);
I tak dalej..
Ulegają zmianie:
header('Content-Type: image/GIF'); imagegif($im);
Patrz że konwertujesz JPEG na inny typ, ponieważ wczytujesz obraz JPEG.
I tyle

Jak masz obrazek w innym formacie to wczytujesz każdy inną funkcją dla przykładu:
imagecreatefrompng, imagecreatefromjpeg
Zostałem wyprzedzony
to nie fear
Na drugi raz zapraszam do manuala w takich sprawach! >> URL:
GD and Image Functions