ImageMagick: como fazer o limite de cores e dither

0

Estou tentando criar uma animação GIF a partir de vários quadros de um vídeo. Eu quero que o resultado seja pequeno limitando as cores, mas sem faixas.

Então, na minha cabeça, pensei em ler os arquivos, depois em reduzir as cores e depois em hesitar. Depois de ler um monte de teoria de operação do ImageMagick em seu site, esta é a linha de comando que eu criei:

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

Os arquivos .png foram gerados a partir do vídeo usando ffmpeg da seguinte forma:

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

Não sei bem onde colocar a cláusula -colors 64 . Devo colocá-lo antes da parte *.jpg ou depois? Ou mesmo depois da -ordered-dither o8x8,8,8,4 parte?

Obrigado por qualquer ajuda. Eu sou novo no ImageMagick, então, por favor, seja gentil: -)

Atualização 1:

Então, eu brinquei e obtive resultados não intencionais (para mim):

-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

Resumindo: Todas as combinações produzem uma qualidade realmente boa, exceto a combinação # 3, que não apenas produziu um resultado visivelmente degradado, mas também o maior.

Isso é bem inesperado ... o que você acha: como o resultado pode variar muito assim?

    
por pepoluan 20.01.2016 / 09:35

1 resposta

1

Olhando o manual do ImageMagick aqui

The Anatomy of the Command-line

The ImageMagick command-line consists of:

one or more required input filenames.

zero, one, or more image settings.

zero, one, or more image operators.

zero, one, or more image sequence operators.

zero, one, or more image stacks.

zero or one output image filenames (required by convert, composite, montage, compare, import, conjure).

You can find a detailed explanation of each of the constituent parts of the command-line in the sections that follow.

Se isso é importante demais, eu não sei, mas isso implica que você o estruture assim:

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

Eu testei esse comando e ele funcionou bem, convertendo 4x arquivos PNG com 6-7MB cada em um GIF de 5.2MB.

    
por 20.01.2016 / 09:56