Quero redimensionar um arquivo GIF animado do.gif
Se eu convert do.gif -resize 24x24\! do-24.gif
obtê-lo redimensionado em do-24.gif, mas não animado
Como redimensioná-lo da maneira correta para obter a mesma animação?
imagemagick
zuba
fonte
fonte
-coalesce
"cria uma visão completa da animação em cada ponto, um pouco como uma verdadeira tira de filme, em vez de uma sequência de animação. Essa sequência, conhecida como Animação Coalescente, é muito mais fácil de estudar, editar, modificar e otimizar".gifsicle --resize 24x24 > do-24.gif
lata para isso tambémEu estava procurando por uma solução imagemagick como eu a conheço, mas no final fui com a sugestão de @ sam
gifsicle
. Ele fez exatamente o que eu queria, sem problemas.É possível otimizar o tamanho do arquivo resultante de várias maneiras, mas fui reduzindo o tamanho e o número de cores. Funcionou como um encanto:
fonte
-coalesce
+-deconstruct
Depois
-coalesce
, você provavelmente deseja adicionar um-deconstruct
:A causa principal do problema é que o GIF de entrada foi minimizado corretamente: o GIF permite que o próximo quadro seja apenas o retângulo modificado do anterior em um deslocamento.
-coalesce
depois expande todos os quadros para o tamanho original, o que faz o redimensionamento funcionar, mas não os comprime novamente como sua imagem de entrada:-deconstruct
é necessária para isso!Usando os dados de teste desta resposta: Como crio um gif animado a partir de imagens estáticas (de preferência com a linha de comando)? podemos ver isso claramente com
identify
:out.gif
out-coalesce.gif
out-deconstruct.gif
Primeiro, vemos como inserir o arquivo,,
out-convert.gif
foi de fato compactado, pois o quadro 2 está apenas516x516
em deslocamento252+257
, enquanto o quadro 1 de tamanho completo1024x1024
.Então, se compararmos as três conversões:
out.gif
: Todos os quadros são256x256
maiores ou maiores e enormes a cerca de 5MiB, TODO por quê?Visualmente incorreto, pois esses
256x256
quadros aproximadamente têm um deslocamento diferente de zero, por exemplo,125+128
para o quadro 2!out-coalesce.gif
: todos os quadros são256x256
e têm o deslocamento correto0+0
.A saída parece visualmente correta, mas o tamanho do arquivo de saída é de 2,0 MiB, que é maior que
out-deconstruct.gif
out-deconstruct.gif
: quadros compactados, tamanho final de saída 1.9 MiB.Não é consideravelmente menor que
out-coalesce.gif
, mas acho que isso ocorre apenas porque o solo preto se comprime muito bem e pode ser muito significativo em geral.ffmpeg e gifsicle
Eu também experimentei os seguintes comandos:
e ambos produziram uma saída de 1,5 MiB com aparência ainda menor.
Veja também: Como crio um gif animado a partir de imagens estáticas (de preferência com a linha de comando)?
TODO: por que eles podem torná-lo menor que
convert
? Eles estão apenas selecionando melhores retângulos diferenciais mais mínimos ou algo mais?Testado no Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8.
fonte