用PHP';制作一个动画GIF;s ImageMagick API


Make an animated GIF with PHP's ImageMagick API

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

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

但是我在PHP API中找不到如何做到这一点。不需要调整大小或做任何事情,我只需要一组需要设置动画的帧。

虽然我不是PHP专家,但我知道这个问题并不太难。你想做的是创建一个Imagick对象,你可以将你的帧附加到它上。每个帧你都可以更改参数,如定时等。

假设你使用的是从基本的网络表单上传的图像,我已经写了一个基本的例子,循环浏览以"image0"上传的图像。您可以自然地通过在固定文件名或其他文件名上使用相同的方法来添加图像。

$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中的内容。

希望这与你想要的有所匹配。