Provavelmente, existe uma maneira melhor de fazer isso, mas eis o que eu faria
Primeiro, divida sua animação em quadros
convert animation.gif +adjoin temp_%02d.gif
Em seguida, selecione um sobre n quadros com um pequeno loop em que você faz o loop em todos os quadros, verifique se ele é divisível por 2 e, se for o caso, copie-o em um novo arquivo temporário.
j=0; for i in $(ls temp_*gif); do if [ $(( $j%2 )) -eq 0 ]; then cp $i sel_'printf %02d $j'.gif; fi; j=$(echo "$j+1" | bc); done
Se você preferir manter todos os números não divisíveis (e, portanto, se quiser excluir em vez de manter todos os enésimos quadros), substitua -eq
por -ne
.
E depois de fazer isso, crie sua nova animação a partir dos quadros selecionados
convert -delay 20 $( ls sel_*) new_animation.gif
Você pode criar facilmente um pequeno script convert.sh
, o que seria algo assim
#!/bin/bash
animtoconvert=$1
nframe=$2
fps=$3
# Split in frames
convert $animtoconvert +adjoin temp_%02d.gif
# select the frames for the new animation
j=0
for i in $(ls temp_*gif); do
if [ $(( $j%${nframe} )) -eq 0 ]; then
cp $i sel_'printf %02d $j'.gif;
fi;
j=$(echo "$j+1" | bc);
done
# Create the new animation & clean up everything
convert -delay $fps $( ls sel_*) new_animation.gif
rm temp_* sel_*
E depois é só ligar, por exemplo
$ convert.sh youranimation.gif 2 20