网页生成直接显示是动态的,可是保存后就成不动的了,只显示最后一张了,例如:$filelist = array('a.png', 'b.png', 'c.png', 'd.png');//组合gif动态图片的图片列表
$gif = new Imagick();
$gif->setFormat("gif");//设置生成图片的格式为gif格式/* 添加字符串设置 -> 
$str = '这是为什么呢?';//要加的字符串
$draw = new ImagickDraw;
$draw->setfont('default.ttf');//字体
$draw->setfontsize(12);//字体大小
$draw->setfillalpha(0.4);//字体透明度
$draw->arc(50, 100, 150, 150, 100, 1000);//初始化一个图形
 <- */foreach($filelist as $file){
    $file = new Imagick($file);    /*
$width = $file->getimagewidth();//获取单张图片的宽
$height = $file->getimageheight();//获取单张图片的高
$file->adaptiveresizeimage($width * 3, $height * 3);//重设每张图片大小
*/// $file->adaptiveThresholdImage(40, 10, 1);//颜色强度
// $file->adaptiveblurimage(20, 1);//模糊、锐化
// $file->resizeimage($img->getimagewidth(), $img->getimageheight(), 20, 20);//缩略、模糊
// $file->annotateImage($draw, 50, 50, 50, $str);//向图片中写字符串
// $file->drawimage($draw);//添加图形

    $gif->addImage($file);//向gif图片中添加图像(图片)
    $gif->setImageDelay(100);//设置间隔
}
header("Content-Type: image/gif");
//echo $gif->getImagesBlob();//直接输出就是动的
echo $gif->writeImages("test.gif", true);//如果保存就不动了
$gif->clear();
$gif->destroy();最终保存后只显示d.png的这针了,网上查了下,也没找到多少相关资料,各位大牛帮帮吗啊

解决方案 »

  1.   

    你是怎么看保存后的test.gif的,有的图像浏览程序不能显示动画。在浏览器中打开test.gif试试。你的代码在我的机器上运行没问题。
      

  2.   

    生成后的图片能动吗?程序图片能动,但是保存后test.gif不能动
      

  3.   

    关注ing       
      

  4.   


    你怎么确定保存后的test.gif不能动?用什么软件看的?我知道的图像浏览软件都不能显示动画,只有在浏览器中打开才能显示动画。
      

  5.   

    生成test.gif后,我双击打开的
      

  6.   


    用浏览器打开这个gif文件看看。
      

  7.   

    使用二进制查看gif header,估计保存数据中gif标记错误。
      

  8.   

    可能是 bug,也可能你参数不对,没用过 Imagick其实 GIFEncoder.class.php 不就很好了吗?又不需要另外安装扩展
      
      

  9.   

    GIFEncoder 只负责组装,图片处理需要用 GD 自行完成
    你用 Imagick 不也是这样吗?
      

  10.   


    对,确实是动画。我的系统是php 5.3.6 on Debian.
      

  11.   


    网上搜索找不到其他人有类似的问题。能否贴一个你生成的gif文件。
      

  12.   

    搜索了一下,人家在保存图片前都有“合并图像”的操作,而你的代码中没有
    $gif->coalesceImages();
    $gif->writeImages("test.gif", true);
      

  13.   

    这是的test.gif
    显示的是四张图片中的最后一张(d.png)
      

  14.   

    前几年为生成 gif 动画,做多一些测试。也开发有分析工具。
    可将每一帧抽取出来
      

  15.   

    唉,弄了半天好像知道咋回事了,就是最后还得用exec来convert下,这样一来找不到libMagick.so.4的路径了,还得添加路径,呵呵,不知道是不是这回事,先放一放了,谢谢啦