ImageMagick: Как сделать ограничение цвета и дизеринга

1239
pepoluan

Я пытаюсь создать 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, которая не только дает заметно ухудшенный результат, но и является самой большой.

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

0

1 ответ на вопрос

1
Jonno

Глядя на руководство для 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 МБ.

А? Я включил `-` в` -layers` ... и что такое правильное написание, `Optimize` или` optimize`? Или это не имеет значения для этого конкретного ключевого слова? pepoluan 8 лет назад 0
В любом случае, спасибо, что указали мне на этот раздел "анатомии"! Должно быть, я пропустил эту конкретную страницу --__-- pepoluan 8 лет назад 0
@pepoluan Ой, не уверен, почему я думал, что ты не сделал, должно быть, скопировал и вставил его неправильно! Сожалею! Как правило, строчные, но это зависит от спецификаций (текстуально они одинаковы, но двоичные сравнения не удастся, поэтому оставьте их, где это возможно) Jonno 8 лет назад 1