Ошибка при создании GIF-изображения с помощью ImageMagick: слишком много исключений и проблема с миганием - PullRequest
1 голос
/ 02 апреля 2020

У меня есть каталог с большим количеством файлов png со следующей структурой:

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

Я пытаюсь создать изображение GIF с ImageMagick , поэтому в терминале я нахожусь набрав:

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 не завершен: enter image description here

Кроме того, он мигает. Я думаю, что это потому, что он рассматривает image18 и image180 как последовательные. Как мне это исправить?

Я использую Ubuntu 18

Редактировать: Новое изображение, созданное предложениями ксеноидов enter image description here

1 Ответ

1 голос
/ 02 апреля 2020
  1. 100 кадров в секунду - это избыточно. Вы можете работать с 10 кадрами / сек c и делить количество изображений на 10 (или, по крайней мере, стандартные 25 кадров / сек c и делить на 4).
  2. *.png расширяется и сортируется в алфавитном порядке для вашей оболочки, поэтому, если вы хотите, чтобы кадры в их числовой последовательности дополняли имена нулями:
for n in {1..3372} ; ; do mv image$n.png image$(printf "%04d" $n).png ; done
convert (и другие команды IM), похоже, используют кэш памяти и имеют другие принудительные ограничения (которые можно перечислить с помощью команды identify IM):
>>> 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  ...
...