【imagick方法】如何使动态图片保存后依然是动态的?

kyzy_yy_pm 2011-06-22 05:39:30
网页生成直接显示是动态的,可是保存后就成不动的了,只显示最后一张了,例如:



$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的这针了,网上查了下,也没找到多少相关资料,各位大牛帮帮吗啊
...全文
975 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xuzuning 的回复:]

引用 20 楼 kyzy_yy_pm 的回复:
还是死的,显示最后一张
那你把它贴出来
[/Quote]


这是的test.gif
显示的是四张图片中的最后一张(d.png)
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 kyzy_yy_pm 的回复:]
还是死的,显示最后一张
[/Quote]那你把它贴出来
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
还是死的,显示最后一张
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 panghuhu250 的回复:]

引用 10 楼 kyzy_yy_pm 的回复:

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

一个样,你的能动?


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


[/Quote]

其实版本啊



[Quote=引用 18 楼 xuzuning 的回复:]

搜索了一下,人家在保存图片前都有“合并图像”的操作,而你的代码中没有
$gif->coalesceImages();
$gif->writeImages("test.gif", true);
[/Quote]
好的,我试一试,记得原理也有那个,但是没管用,我再试一试
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
搜索了一下,人家在保存图片前都有“合并图像”的操作,而你的代码中没有
$gif->coalesceImages();
$gif->writeImages("test.gif", true);
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kyzy_yy_pm 的回复:]
生成后的图片能动吗?程序图片能动,但是保存后test.gif不能动
[/Quote]
你贴张不动的动画看看
panghuhu250 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 panghuhu250 的回复:]

引用 10 楼 kyzy_yy_pm 的回复:

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

一个样,你的能动?


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

网上搜索找不到其他人有类似的问题。能否贴一个你生成的gif文件。
panghuhu250 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 kyzy_yy_pm 的回复:]

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

一个样,你的能动?
[/Quote]

对,确实是动画。我的系统是php 5.3.6 on Debian.
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xuzuning 的回复:]

GIFEncoder 只负责组装,图片处理需要用 GD 自行完成
你用 Imagick 不也是这样吗?
[/Quote]
哈哈,这个扩展中有很多东西,生成图片效果也更好,而且简单,比如缩略直接就一句代码就行啦,哈哈,真爽啊
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
GIFEncoder 只负责组装,图片处理需要用 GD 自行完成
你用 Imagick 不也是这样吗?
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 xuzuning 的回复:]

可能是 bug,也可能你参数不对,没用过 Imagick

其实 GIFEncoder.class.php 不就很好了吗?又不需要另外安装扩展
[/Quote]
好牛网站不知道是用的什么,那个类试过,方法太少了
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
可能是 bug,也可能你参数不对,没用过 Imagick

其实 GIFEncoder.class.php 不就很好了吗?又不需要另外安装扩展

kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 panghuhu250 的回复:]

引用 6 楼 kyzy_yy_pm 的回复:
生成test.gif后,我双击打开的


用浏览器打开这个gif文件看看。
[/Quote]
一个样,你的能动?
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
唉,弄了半天好像知道咋回事了,就是最后还得用exec来convert下,这样一来找不到libMagick.so.4的路径了,还得添加路径,呵呵,不知道是不是这回事,先放一放了,谢谢啦
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 kyzy_yy_pm 的回复:]
引用 23 楼 xuzuning 的回复:

查看了图片数据,的确是只有一帧

怎么看的,呵呵,很好奇
[/Quote]前几年为生成 gif 动画,做多一些测试。也开发有分析工具。
可将每一帧抽取出来
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
还有,记得刚才搜索代码时
还看到他们的代码中有一个 屏蔽上一帧 的动作,不知你有没有试过
kyzy_yy_pm 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 xuzuning 的回复:]

查看了图片数据,的确是只有一帧
[/Quote]
怎么看的,呵呵,很好奇
xuzuning 2011-06-24
  • 打赏
  • 举报
回复
查看了图片数据,的确是只有一帧
panghuhu250 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kyzy_yy_pm 的回复:]

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

你怎么确定保存后的test.gif不能动?用什么软件看的?

我知道的图像浏览软件都不能显示动画,只有在浏览器中打开才能显示动画。
liveforsingingggg 2011-06-23
  • 打赏
  • 举报
回复
关注ing
加载更多回复(7)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧