使用PHP的ImageMagick API制作动画GIF

时间:2012-02-23 17:11:59

标签: php imagemagick animated-gif

我可以在我的操作系统中轻松完成

convert -delay 1/1 -loop 0 *.gif animated.gif

但我无法在PHP API中找到如何做到这一点。没有调整大小或任何需要的东西,我只有一组需要动画的帧。

1 个答案:

答案 0 :(得分:15)

虽然我不是PHP专家,但我知道这个问题并不太难。你想要做的是创建一个可以附加帧的Imagick对象。对于每个帧,您可以更改时间等参数。

假设您正在使用从基本Web表单上传的图像,我编写了一个基本示例,循环使用名称“image0”上传的图像,其中“0”上升到很多文件包括在内。您当然可以通过在固定文件名或其他方面使用相同的方法来添加图像。

$GIF = new Imagick();
$GIF->setFormat("gif");

for ($i = 0; $i < sizeof($_FILES); ++$i) {
    $frame = new Imagick();
    $frame->readImage($_FILES["image$i"]["tmp_name"]);
    $frame->setImageDelay(10);
    $GIF->addImage($frame);
}

header("Content-Type: image/gif");
echo $GIF->getImagesBlob();

这个例子创建了一个Imagick对象,它将成为我们的GIF。然后循环上传到服务器的文件并首先读取每个文件(但请记住,这种技术依赖于图像按上述方式命名),其次是获取延迟值,第三,它附加到即将到来的GIF。这是基本的想法,它会产生你想要的东西(我希望)。

但是有很多篡改,你的配置可能看起来不同。我总是找到php.net Imagick API对吮吸的引用,但它仍然很好用,我不时地使用它来引用标准ImageMagick中的东西。

希望这与你追求的有些相符。