如何在PHP中将动态GIF转换为静态图像?

3

我需要在PHP中将动态GIF转换为静态图像。我的意思是例如使用它的第一帧。有任何想法如何做到这一点吗?


你能使用ImageMagick还是只能用GD? - JAL
你到目前为止尝试了什么? - Charles
4个回答

4

将GIF动画剥离可以通过将其转换为另一种格式,然后再转换回来来实现。PNG是这种“其他格式”的很好的选择,因为它是非损失性的,不像JPEG。使用PHP的GD函数,并输出PNG而不是GIF:

header('Content-type: image/png');
imagepng(imagecreatefromgif($file));

如果PHP/GD不支持动态GIF(我认为它不支持),则以下代码可能有效(未经测试)。与上面的片段不同,它将以GIF格式输出图像:
header('Content-type: image/gif');
imagegif(imagecreatefromgif($file));

如果那无法实现,且必须输出GIF格式,可以使用以下方法:
$img1 = imagecreatefromgif($file);
$size = getimagesize($img1);
$img2 = imagecreatetruecolor($size[0], $size[1]);
imagecopy($img2, $img1, 0, 0, 0, 0, $size[0], $size[1]);
header('Content-type: image/gif');
imagegif($img2);

3

2
我能想到的最好的方法(不是很可爱)是将gif转换为png / jpeg,然后再次转换为gif,:P
尝试使用以下内容进行转换;) http://gallery.menalto.com/node/13206 希望这可以帮助您。

显然,如果您选择这样做,转换为PNG是更好的选择。但是,由于PHP/GD似乎不支持动画GIF,将其“转换”为GIF(例如imagegif(imagecreatefromgif($file));)可能会起作用。 - You

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接