使用 ImageMagick 和许多图像的 GIF 动画

GIF animation with ImageMagick and many images

我正在尝试使用 ImageMagick 使用多个源 jpg 图像创建 GIF 动画。这是我进行的命令行调用

convert -delay 20 -loop 0 $WDir/*.jpg -resize 20% $WDir/animate.gif

其中 $WDir 是一个 bash 变量,它指向所有图像所在的工作目录。该脚本对于 10 张图像运行良好,但我有 500 多张图像要制作动画。我不想 resize 图像更少,我试图限制内存使用,但这似乎没有帮助。

有人能告诉我如何在不牺牲图像质量的情况下使用内存有限 (16GB) 的机器制作大量图像的动画吗?如果需要在 "chunks" 中完成,那很好,因为我可以编写一个 bash 脚本来完成这项工作,并且 "set it and forget it".

您的 Imagemagick 版本是什么,平台是什么?我假设是 Unix(Linux 或 Mac)。你遇到了什么错误?如果你 运行 内存不足,那么你可以调整你的 policy.xml 文件,这样你就可以使用磁盘而不是 RAM,但处理时间会更长。您可能需要像您所说的那样分批处理。此外,根据您的 OS,图像名称字符串可能会超过 OS 限制(Windows 的典型值)。

我的建议是使用 mogrify 处理所有图像,因为它一次处理一个图像,因此不会占用大量 RAM。使用 mogrify 调整大小和重新格式化。完成后,您可能可以将所有 gif 文件加载到 RAM 中并制作动画。我建议您创建一个新目录来保存 mogrify 的输出,并使用 -path 参数指定该输出目录。需要先创建目录。所以

cd to directory holding your input images
mogrify -path yourpath2/newdirectory -format gif -resize 20% *.jpg

然后一旦完成

cd to newdirectory
convert -delay 20 *.gif -loop 0 animate.gif