ImageMagick: Как сделать ограничение цвета и дизеринга
Я пытаюсь создать анимацию 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 ответ
Глядя на руководство для 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 МБ.