使用 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 会导致出现白斑
使用 Image Magick 创建具有固定颜色图的 GIF 图像
使用 imagemagick 将 GIF 图像转换为 PNG,但得到的是 RGBA 图像而不是调色板版本