Я хочу, делают a .gif
изображение с анимацией от данного набора .jpg
изображения.
Я предпочел бы делать это из командной строки, таким образом, инструменты командной строки будут очень приветствоваться.
Можно использовать пакет ImageMagick . Установите его с помощью команды:
sudo apt-get install imagemagick
Теперь можно создать gif
из количества изображений (jpg
) использование:
convert -delay 20 -loop 0 *.jpg myimage.gif
Завершать ответ @Maythux:
-resize
опция: В моем случае, я имею 4608x3456, изображения и сгенерированный gif были больше, чем 300M для 32 изображений
convert -resize 20% -delay 20 -loop 0 *.jpg myimage.gif
, или
convert -resize 768x576 -delay 20 -loop 0 *.jpg myimage.gif
*.jpg
, сосет немного при контакте с числовыми значениями, можно генерировать gif с неотсортированными рисунками
$ ls|cat
21-33-26_1.jpg
21-33-26_10.jpg // <--- this one
21-33-26_2.jpg
21-33-26_3.jpg
21-33-26_4.jpg
21-33-26_5.jpg
21-33-26_6.jpg
21-33-26_7.jpg
21-33-26_8.jpg
21-33-26_9.jpg
21-33-28_1.jpg // <--- should be here
21-33-28_2.jpg
21-33-28_3.jpg
...
, Поскольку снимки были сделаны очень быстро (10/с), у них всех есть то же время изменения, и Вы не можете обмануть использование ls -t
, например. На человечности можно использовать ls -v
вместо этого, что-то как:
convert -resize 768x576 -delay 20 -loop 0 `ls -v` myimage.gif
Сортировка численно довольно хитра на Mac OS X, хотя, я предполагаю, что необходимо будет создать пользовательский сценарий.
У меня нет достаточной репутации для комментария, но вместо того, чтобы изменить имена файлов, можно использовать globbing, чтобы заставить оболочку разворачивать имена файлов
convert -resize 50% -delay 10 -loop 0 image_{0..99}.jpg output.gif
Можно использовать названную программу, преобразовывают включенный в imagemagick пакет. Это - управляемая командная строка, но очень простая в использовании. Установите его или через центр программного обеспечения или перейдите к командной строке и типу
sudo apt-get install imagemagick
Теперь для создания .gif.
convert -delay 100 -size 100x100 xc:SkyBlue \
-page +5+10 balloon.gif -page +35+30 medical.gif \
-page +62+50 present.gif -page +10+55 shading.gif \
-loop 0 animation.gif
*Note вышеупомянутый пример является прямым от Изображение Примеры Magick
Можно легко сделать это с GIMP. Сначала установите его, если это уже не установлено с
sudo apt-get install gimp
От GIMP переходят к Файлу-> Открытый как Слои для открытия всего png's на их собственном слое.
Отсюда можно выполнить редактирования на слоях и, когда-то сделанные, перейдите к Файлу-> Экспорт Как. От диалогового окна убедиться установить тип файла на GIF.
Оттуда Вы перейдете к опциям экспорта GIF. Отметьте опцию 'As Animation' и установите параметры как требуется.
решение для ffmeg + данные тестирования
С Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8, я нашел, что ffmpeg намного быстрее и использует намного меньше памяти.
Самая простая команда преобразования:
ffmpeg \
-framerate 60 \
-pattern_type glob \
-i '*.png' \
-r 15 \
-vf scale=512:-1 \
out.gif \
;
Можно получить мои данные тестирования с:
wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
Данные тестирования были сгенерированы с: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292 и содержит 256 1024x1024 изображения PNG.
И вот другие данные тестирования, которые можно генерировать непосредственно в браузере прямо сейчас! https://stackoverflow.com/questions/19235286/convert-html5-canvas-sequence-to-a-video-file/57153718#57153718
Важное ffmpeg
опции, которые я хочу выделить:
-pattern_type glob
: удобный способ выбрать изображения
-framerate 60
: примите 60 кадр/с на входных изображениях и произведите того же кадр/с.
ffmpeg
не может знать иначе, так как нет никаких данных кадр/с, находится в изображениях, поскольку существует, находится в форматах видео.
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 по сравнению со сравнительным тестом ffmpeg
Я сравнил команды:
/usr/bin/time -v convert *.png -deconstruct -delay 1.6 out-convert.gif
/usr/bin/time -v ffmpeg \
-framerate 60 \
-pattern_type glob \
-i '*.png' \
out-ffmpeg.gif \
;
Команды были созданы для создания выводов, которые максимально близки для создания сравнения допустимым:
/usr/bin/time -v
: используемый для нахождения максимального использования памяти, как объяснено в: https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process
-deconstruct
: Изображения GIF могут содержать просто минимальный измененный прямоугольник от предыдущего кадра для создания меньшего GIF.
ffmpeg
вычисляет те diffs по умолчанию, но ImageMagick не делает, если -deconstruct
используется.
Вы в основном захотите использовать ту опцию каждый раз с ImageMagick.
Мы можем наблюдать различие с:
identify out.gif
Со сжатой версией все кадры имеют меньшие размеры, чем начальный, например:
out.gif[0] GIF 1024x1024 1024x1024+0+0 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
out.gif[1] GIF 516x516 1024x1024+252+257 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
out.gif[2] GIF 515x520 1024x1024+248+257 8-bit sRGB 256c 16.7865MiB 0.010u 0:00.010
В этом примере второй кадр только 516x516
вместо полного 1024x1024, и помещается в смещение 252+257
. Это поэтому содержит просто средний треугольник.
См. также: как я могу изменить размер анимированного использования файла GIF ImageMagick?
-delay
: значение, которое соответствует 60 футам в секунду ffmpeg
. Не должен иметь значения для производительности преобразования, но я не хочу рисковать ею.
Вывод GIFs имеют о том же размере и выглядят визуально идентичными.
Мы добираемся для ImageMagick:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:56.16
Maximum resident set size (kbytes): 2676856
и для ffmpeg:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.41
Maximum resident set size (kbytes): 97172
от которого мы видим что:
Протестируйте аппаратные средства: ноутбук Lenovo ThinkPad P51, Intel Core i7-7820HQ, 32 ГБ (16+16) SODIMM на 2400 МГц DDR4, SSD на 512 ГБ PCIe TLC OPAL2.