Você pode usar o ImageMagick para converter imagens de várias maneiras, e isso deve ser possível com bastante facilidade. Primeiro, você pode dividir em partes ( original.png
sendo a imagem de origem e, neste caso, 32x32 pixels de tamanho):
convert original.png -crop 32x32 parts-%02d.png
Você pode então convertê-lo em uma animação (use -loop 1
se você não quiser que ele faça um loop):
convert -loop 0 -page +0+0 ./parts*.png output.gif
Como resultado:
Os PNGs de saída do primeiro comando têm um deslocamento incluído neles, portanto, sem a opção -page +0+0
, a animação termina como:
Existem várias outras opções que você pode incluir (principalmente no segundo comando), como -delay
etc - você também pode otimizar a animação , por isso é menor (e mais rápido para carregar / render) - por exemplo emprestado de aqui :
convert output.gif -fuzz 10% -layers Optimize optimised.gif
ou usando gifsicle
gifsicle -O output.gif -o optimised.gif
EDITAR: Se os quadros forem transparentes, você poderá definir os quadros a serem substituídos adicionando a opção -dispose Background
, portanto, quando um quadro for eliminado quando o próximo for carregado:
Exemplo acima feito sem a opçãopage
para que seja mostrado claramente
O problema com isso é que você provavelmente não pode otimizar a imagem resultante - então outra maneira pode ser tornar os quadros opacos, de modo que o próximo quadro cubra o anterior.