使用 ImageMagick 创建 GIF 图像时出错:异常过多和闪烁问题

Posted

技术标签:

【中文标题】使用 ImageMagick 创建 GIF 图像时出错:异常过多和闪烁问题【英文标题】:Error at creating GIF Image with ImageMagick: too many exceptions and blinking problem 【发布时间】:2020-07-14 03:55:49 【问题描述】:

我有一个包含大量 png 文件的目录,其结构如下:

image1.png
image2.png
...
image3372.png

我正在尝试使用 ImageMagick 创建一个 GIF 图像,所以我在终端中输入:

sudo apt-get install imagemagick
convert -delay 0.01 -loop 0 *.png myimage.gif

但我有下一个错误:

...
convert-im6.q16: DistributedPixelCache '127.0.0.1' @ error/distribute-cache.c
/ConnectPixelCacheServer/244.
convert-im6.q16: cache resources exhausted `Image119.png' @ error/cache.c/OpenPixelCache/3984.
convert-im6.q16: too many exceptions (exception processing suspended).

而且创建的 GIF 不完整:

而且,它会闪烁。我认为这是因为它将 image18 和 image180 视为连续的。我该如何解决?

我正在运行 Ubuntu 18

编辑: 由 xenoid 建议生成的新图像

【问题讨论】:

【参考方案1】:
    100 帧/秒是多余的。您可以以 10 帧/秒的速度运行并将图像计数除以 10(或至少标准的 25 帧/秒并除以 4)。 *.png 由您的外壳扩展并按字母顺序排序,因此,如果您希望帧按其编号顺序排列,请用 0 填充名称:
for n in 1..3372 ; ; do mv image$n.png image$(printf "%04d" $n).png ; done
    convert(和其他 IM 命令)似乎使用内存缓存并具有其他自我强制限制(您可以使用 IM 的identify 命令列出):
>>> identify -list resource
Resource limits:
  Width: 16KP
  Height: 16KP
  List length: 18.446744EP
  Area: 128MP
  Memory: 256MiB
  Map: 512MiB
  Disk: 1GiB
  File: 768
  Thread: 8
  Throttle: 0
  Time: unlimited

您可以提高一次跑步的限制:

convert -limit memory 1000  ...

【讨论】:

convert -delay 0.1 -loop 0 *.png myimage.gif 遇到了同样的问题。如何将图像计数除以十? ..另外,我认为你添加了额外的;这里:for n in 1..3372 ; ; do mv image$n.png image$(printf "%04d" $n).png ; done 除以 10 只使用以相同数字结尾的图像:: convert -delay 0.1 -loop 0 *1.png myimage.gif 很好,但我仍然有同样的错误,虽然图像已经显着改善(见我的编辑) 查看已编辑的答案,IM 对资源使用设置了限制,这可以暂时取消

以上是关于使用 ImageMagick 创建 GIF 图像时出错:异常过多和闪烁问题的主要内容,如果未能解决你的问题,请参考以下文章

带有 ImageMagick 和许多图像的 GIF 动画

使用 imagemagick 创建高质量 gif 会导致出现白斑

使用 Image Magick 创建具有固定颜色图的 GIF 图像

使用 imagemagick 将 GIF 图像转换为 PNG,但得到的是 RGBA 图像而不是调色板版本

使用 ImageMagick 将 gif 转换为 png 时出现“转换:不正确的图像标题”错误

Imagemagick:如何减小具有大静态区域的动画 GIF 的大小?