Это сработало для меня как с gif, так и с png (конечно, при использовании этого типа изображения измените каждую ссылку на png в этом примере на gif).
$virtual_image = imagecreatetruecolor($desired_width, $desired_height);
$colour = imagecolorallocate($virtual_image,255,255,255);
imagefill($virtual_image , 0, 0, $colour);
imagealphablending($virtual_image,true);
imagesavealpha($virtual_image , true);
//the next line only if you're resizing to a new $width/$height, otherwise leave this line out
imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height);
header('Content-Type: image/png');
if (imagepng($virtual_image)) imagedestroy($virtual_image);