Image Magick动画图像

时间:2014-04-23 06:47:22

标签: php imagemagick imagick animated-gif

你好,这里的人是我的代码......

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

        $_FILES['image0']="C:\wamp\www\latest\im\image0.gif";
        $_FILES['image1']="C:\wamp\www\latest\im\image1.gif";
        $_FILES['image2']="C:\wamp\www\latest\im\image2.gif";
        $_FILES['image3']="C:\wamp\www\latest\im\image3.gif";



        for ($i = 0; $i < sizeof($_FILES); ++$i) {


            $frame = new Imagick();
            $frame->readImage($_FILES["image$i"]);
            $frame->setImageDelay(100);
            $GIF->addImage($frame);
        }

        $GIF->writeImages("C:\wamp\www\latest\im\allimage.gif" , true);

上面的代码通过创建动画gif工作正常,但问题是它与以前的图像重叠,,,当下一个图像出现时,Iam尝试disappear the previous image ...类似于Timer, ......有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您应该使用setImageDispose方法清除框架区域:

$frame->readImage($_FILES["image$i"]);
$frame->setImageDispose(2);
$frame->setImageDelay(100);
  • 未定义:0 - &gt;未指定处置(相当于&#39;无&#39;)。
  • 无:1 - &gt;请勿丢弃,只需覆盖下一帧图像。
  • 背景:2 - &gt;用背景颜色清除框架区域。
  • 上一页:3 - &gt;在此帧叠加之前清除图像。

您可以添加一个电话给&#39; optimizeImageLayers&#39;减少文件的大小:

$GIF->optimizeImageLayers();
$GIF->writeImages("C:\wamp\www\latest\im\allimage.gif" , true);