Многие из вопросов, спрашивающих, как создать анимированный GIF из набора изображений PNG, предлагают использовать вариант команды ImageMagick convert
:
convert -delay 2 -loop 0 *.png animated.gif
Тем не менее, у меня есть несколько тысяч изображений, и, таким образом, я convert
использую всю свою память, меняю местами и затем вылетаю Какое альтернативное программное обеспечение существует, которое больше заботится о памяти? Я мог бы использовать другой открытый формат, если .gif
он не поддерживается, и я предпочитаю инструмент CLI.
command-line
software-recommendation
images
conversion
dotancohen
источник
источник
convert -delay 2 -loop 0 0*.png animated.gif
преобразуются только в те файлы, которые начинаются с «0». И так далее.Ответы:
Похоже, вы пытаетесь сделать видео. Если это так, то я бы использовал правильный формат видео.
В этом случае я бы использовал ffmpeg для преобразования отдельных файлов PNG в видео H.264. Поскольку ffmpeg предназначен для работы с видео, которое может длиться часами, у вас не должно возникнуть проблем с тысячами изображений. Использование H.264 вместо анимированного GIF приведет к значительному улучшению качества изображения.
Нечто подобное должно работать для вас:
-framerate 1/2
: Это устанавливает частоту кадров в половину FPS, или 2 секунды на кадр.-i img%04d.png
: Это говорит FFmpeg для чтения файлов ,img0000.png
хотяimg9999.png
.-c:v libx264
: Используйте видеокодек libx264.-crf <number>
: Настройка качества. От 0 до 51. 23 по умолчанию. 0 - это истинное кодирование без потерь, которое будет иметь достаточно высокую пропускную способность. 18 почти без визуальных потерь.-r 30
: Установите выходную частоту кадров 30 кадров в секунду. Каждое из входных изображений будет продублировано, чтобы сделать вывод, который вы указали здесь. Вы можете оставить этот параметр отключенным, и выходной файл будет с входной частотой кадров, но полученный фильм не отображался должным образом, когда я попробовал его только сейчас.out.mp4
: Имя выходного файла.Ссылки:
источник
Лично я бы просто запустил его на ограниченном количестве файлов вместо всех сразу. Например, что-то вроде этого:
источник
Используйте
-limit memory 1GiB
для ограничения объемаconvert
используемой памяти .Тысячи изображений создадут огромный GIF-файл, который большинство компьютеров будет стараться показать. Я держу свои анимированные GIF-изображения ниже 200 изображений, когда это возможно. Чем меньше, тем лучше. Если вы пронумеруете свои изображения, эта команда удалит нечетные изображения
rm *[13579].png
.Итак, вот мой типичный рабочий процесс для создания анимированного GIF из сцены фильма:
источник
Возможно, APNG пригодится вам. Он поддерживается некоторыми браузерами , включая Firefox, но на данный момент, за исключением Chrome и IE. Поскольку это просто расширение PNG, конвертировать PNG в APNG очень просто. Инструмент apngasm может сделать это. Но формат настолько прост, что недавно я сам написал сборщик APNG для Sage. Адаптация этого кода была бы альтернативой.
источник
Если у вас есть тысячи PNG, формат anigif странный. Я бы сделал это таким образом, используя
avconv
:источник
gifsicle - это утилита командной строки для обработки анимации GIF. Если вы хотите обменять память на скорость, вы можете использовать ее ключ --conserve-memory.
источник
В дополнение к другим ответам: поскольку вы хотите создать GIF-файл, я предполагаю, что вы хотите отобразить изображение на веб-странице. Если это так, я бы не стал конвертировать ваши PNG вообще. Просто Google для "слайд-шоу Javascript" и использовать один из миллионов бесплатных сценариев. Или написать свой, это действительно тривиально.
Преимущества этого метода:
в браузер загружается только одно изображение, слайд-шоу запускается быстро и не занимает много ОЗУ на компьютере пользователя.
решение масштабируется до миллионов изображений. Или миллиарды, если вы достаточно терпеливы, чтобы посмотреть их все :)
Вы можете добавить элементы управления на свою страницу, чтобы приостановить, перемотать назад, изменить задержку или перейти к определенному кадру.
источник