Я хочу сделать .gif
анимированные картинки из заданного набора .jpg
картинок.
Я бы предпочел сделать это из командной строки, поэтому инструменты командной строки будут очень кстати.
command-line
image-processing
gif
Maythux
источник
источник
Ответы:
Вы можете использовать пакет ImageMagick . Установите его с помощью команды:
Теперь вы можете создать
gif
из числа картинок (jpg
) используя:источник
-resize 50%
.-deconstruct
. Я также обнаружил, что ImageMagick очень требователен кconvert -delay 0 -loop 0 *.tif myanimated.gif
работал хорошо, на 720 файлов TIFЧтобы завершить ответ @Maythux:
Чтобы избежать создания очень большого файла, вы можете использовать
-resize
опцию:В моем случае у меня есть 4608x3456 изображений, и сгенерированный GIF был больше, чем 300M для 32 изображений
или же
Позаботься о * .jpg
*.jpg
Немного отстой при работе с числовыми значениями, вы можете сгенерировать GIF с несортированными фото.Поскольку снимки были сделаны очень быстро (10 / с), все они имеют одинаковое время модификации, и вы не можете использовать трюк,
ls -t
например. В Ubuntu вы можете использоватьls -v
вместо этого что-то вроде:Числовая сортировка довольно сложна в Mac OS X, хотя, я думаю, вам нужно будет создать собственный скрипт.
источник
find
,sort
расширение скобки и так далее.ls
Инструмент , как известно , непригодный для такого рода вещи. Используйтеfind
. Есть немного кривой обучения, но оно того стоит.У меня недостаточно репутации, чтобы комментировать, но вместо изменения имен файлов вы можете использовать глобирование, чтобы ваша оболочка расширяла имена файлов
источник
GIMP
Вы можете легко сделать это с GIMP. Сначала установите его, если он еще не установлен с
Создание GIF
Из GIMP перейдите в File -> Open as Layers, чтобы открыть все png на их собственном слое.
Отсюда вы можете выполнить редактирование слоев и, как только закончите, перейдите в File -> Export As . В диалоговом окне обязательно укажите тип файла GIF.
Оттуда вы перейдете к параметрам экспорта GIF. Отметьте опцию « As Animation » и установите необходимые параметры.
источник
решение ffmeg + данные испытаний
Начиная с Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8, я обнаружил, что ffmpeg намного быстрее и использует гораздо меньше памяти .
Самая простая команда преобразования:
Вы можете получить мои данные испытаний с:
Данные теста были созданы с: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292 и содержат 256 изображений PNG 1024x1024.
А вот и другие тестовые данные, которые вы можете генерировать прямо в своем браузере прямо сейчас! https://stackoverflow.com/questions/19235286/convert-html5-canvas-sequence-to-a-video-file/57153718#57153718
Важные
ffmpeg
параметры, которые я хочу выделить:-pattern_type glob
: удобный способ выбора изображений-framerate 60
: примите 60 FPS на входных изображениях и выведите тот же FPS.ffmpeg
иначе не может знать, поскольку в изображениях нет данных FPS, как в видеоформатах.Для 256 входных кадров требуется около 4 секунд.
-r 15
: по желанию. Выберите одно каждые 4 изображения, чтобы уменьшить размер (4 == 60 / 15
).При этом
identify out.gif
говорится, что GIF содержит только 64 кадра.Игра все еще занимает 4 секунды, поэтому задержка изменяется, чтобы все совпадало.
-vf scale=512:-1
: по желанию. Установите ширину, высоту шкалы пропорционально, обычно для уменьшения размера и экономии места.Чтобы заставить ImageMagick работать, мне сначала пришлось изменить пределы диска и памяти,
/etc/ImageMagick-6/policy.xml
как описано по адресу: https://superuser.com/questions/1178666/imagemagick-convert-quits-after-some-pagesСмотрите также:
Тест ImageMagick vs ffmpeg
Я сравнил команды:
Команды были созданы для получения выходных данных, максимально близких к действительному сравнению:
/usr/bin/time -v
: используется для определения максимального использования памяти, как описано по адресу: https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process-deconstruct
: Изображения GIF могут содержать только минимальный измененный прямоугольник из предыдущего кадра, чтобы уменьшить размер GIF.ffmpeg
вычисляет эти различия по умолчанию, но ImageMagick не делает, если-deconstruct
не используется.Вы будете в основном хотеть использовать эту опцию каждый раз с ImageMagick.
Мы можем наблюдать разницу с:
В сжатой версии все кадры имеют меньшие размеры, чем исходный, например:
В этом примере второй кадр только
516x516
вместо полных 1024x1024 и размещен со смещением252+257
. Поэтому он содержит только средний треугольник.См. Также: как изменить размер анимированного GIF-файла с помощью ImageMagick?
-delay
: значение, которое соответствует 60FPS offfmpeg
. Не должно иметь значения для эффективности конверсии, но я не хочу рисковать.Выходные GIF-файлы имеют примерно одинаковый размер и выглядят визуально идентичными.
Мы получаем для ImageMagick:
и для ffmpeg:
из которого мы видим, что:
Тестовое оборудование: ноутбук Lenovo ThinkPad P51 , Intel Core i7-7820HQ, 32 ГБ (16 + 16) DDR4 2400 МГц SODIMM, 512 ГБ SSD PCIe TLC OPAL2.
источник
-r
и-v
команды, тем не менее, выходной GIF имеет гораздо более низкое качество, чем оригинальные файлы PNG. Как сохранить то же качество gif, что и для файлов png?-framerate 60 -r 60
. Проверяйте сгенерированный GIF и вводите изображения с помощью инструментов ImageMagick, например,identify
чтобы попытаться выяснить, что происходит.Вы можете использовать программу под названием convert, включенную в пакет imagemagick. Это командная строка, но очень проста в использовании. Установите его либо через центр программного обеспечения, либо перейдите в командную строку и введите
Теперь, чтобы создать .gif.
* Обратите внимание, что приведенный выше пример взят из примеров Image Magick.
источник
convert -delay 20 -loop 0 *.png out.gif
делает цикл GIF.