当前位置:  开发笔记 > 编程语言 > 正文

调整动画GIF文件大小而不破坏动画

如何解决《调整动画GIF文件大小而不破坏动画》经验,为你挑选了4个好方法。

我需要在不破坏动画的情况下调整动画GIF文件的大小.

我怎么能用PHP做到这一点?



1> Jeremy Stanl..:

如果你有imagemagick访问权限,你可以这样做:

system("convert big.gif -coalesce coalesce.gif");
system("convert -size 200x100 coalesce.gif -resize 200x10 small.gif");

如果您没有system()访问权限,则很可能使用imagemagick插件

注意:这可能会创建一个更大的文件大小,尽管较小的尺寸图像由于合并基本上不优化图像.

更新: 如果您没有ImageMagick访问权限,您应该能够使用以下步骤的组合来调整动画gif的大小(假设您具有GD访问权限):

    检测图像是否是动画gif:我可以使用php和gd检测GIF动画吗?(回答)

    将动画gif拆分为单独的框架:http://www.phpclasses.org/package/3234-PHP-Split-GIF-animations-into-multiple-images.html

    调整各个框架的大小:http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/

    将帧重新组合成动画gif:http://www.phpclasses.org/package/3163-PHP-Generate-GIF-animations-from-a-set-of-GIF-images.html

这肯定比ImageMagick路线密集得多,但它在技术上应该是可行的.

如果您使用它,请与世界分享!


我认为我的理论只是在实践中工作:http://forssto.com/gifexample/

2> cherouvim..:

您需要将gif分解为帧,缩略图和重新组合.

看看ImageMagick和本教程.



3> nut..:

试试GDEnhancer(使用ImageCraft).它只需要GD库,它保留了gif动画



4> Antony Harde..:

我已经尝试了许多使用Imagick PHP模块调整动画GIF大小的示例,但是没有一个对我有用。然后,在最后我一些调试时间后,发现实际的问题:动画是在保存图片到磁盘丢失,通过$animation->writeImage($file_dst);$animation->writeImages($file_dst, true);

我将其更改为 file_put_contents($file_dst, $animation->getImagesBlob()); ,大多数示例立即开始工作。

希望它可以帮助某人。

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有