Я пытаюсь создать GIF-анимацию из нескольких кадров видео. Я хочу, чтобы результат был небольшим, ограничивая цвета, но без полос.

Поэтому я подумал о том, чтобы прочитать файлы, затем уменьшить цвета, а затем сменить их. После прочтения большого количества теории работы ImageMagick на их веб-сайте, я пришел к командной строке:

convert -size 640x640 -colors 64 *.png -ordered-dither o8x8,8,8,4 +map \
  -layers Optimize output.gif

Файлы .png были сгенерированы из видео с использованием ffmpeg следующим образом:

ffmpeg -i source.mp4 -ss 10:01.123 -to 10:03.321 frames/source_%03d.png

Хотя я не совсем уверен, куда поместить -colors 64 . Должен ли я поставить его до *.jpg части или после? Или даже после -ordered-dither o8x8,8,8,4 часть?

Спасибо за любую помощь. Я совсем новичок в ImageMagick, поэтому, пожалуйста, будьте осторожны :-)


Обновление 1:

Итак, я поиграл и получил следующие неинтуитивные (для меня) результаты:

-delay 12 -colors 128 *.png -resize 640x640 -ordered-dither o8x8,8 -deconstruct +map \
  -layers Optimize output_1.gif
Result: 3.09 MB, Good quality

-delay 12 *.png -colors 128 -resize 640x640 -ordered-dither o8x8,8 -deconstruct +map \
  -layers Optimize output_2.gif
Result: 3.09 MB, Good quality

-delay 12 *.png -resize 640x640 -colors 128 -ordered-dither o8x8,8 -deconstruct +map \
  -layers Optimize output_3.gif
Result: 4.41 MB, Degraded quality

-delay 12 *.png -resize 640x640 -ordered-dither o8x8,8 -colors 128 -deconstruct +map \
  -layers Optimize output_4.gif
Result: 2.77 MB, Good quality

-delay 12 <individual .png followed by -colors 128 each> -resize 640x640 \
  -ordered-dither o8x8,8 -colors 128 -deconstruct +map -layers Optimize output_5.gif
Result: 3.09 MB, Slightly Better quality

Короче говоря: все комбинации дают действительно хорошее качество, кроме комбинации № 3, которая не только дает заметно ухудшенный результат, но и является самой большой.

Это довольно неожиданно ... что вы думаете: как мог результат так дико варьироваться?

1 ответ1

1

Глядя на руководство для ImageMagick здесь

Анатомия командной строки

Командная строка ImageMagick состоит из:

одно или несколько обязательных входных имен файлов.

ноль, один или несколько параметров изображения.

ноль, один или несколько операторов изображения.

ноль, один или несколько операторов последовательности изображений.

ноль, один или несколько стеков изображений.

имена файлов с нулевым или одним выходным изображением (требуется для преобразования, компоновки, монтажа, сравнения, импорта, заклинания).

Вы можете найти подробное объяснение каждой из составных частей командной строки в следующих разделах.

Не важно, имеет ли это значение, я не знаю, но это подразумевает, что вы структурируете это так:

convert  *.png -size 640x640 -colors 64 -ordered-dither o8x8,8,8,4 +map -layers optimize output.gif

Я протестировал эту команду, и она отлично работала, конвертировал 4x PNG-файла размером 6-7 МБ каждый в GIF размером 5,2 МБ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .