Either of these should work or Linux/Mac (unix), though they may be a bit slower than the duplicate method.
ww=`convert rose: -format "%w" info:`
hh=`convert rose: -format "%h" info:`
convert rose: -delay 10 rose_anim.gif
for ((i=1; i<29; i++)); do
ii=`convert xc: -format "%[fx:-$ww*(1-$i/29)]" info:`
jj=`convert xc: -format "%[fx:-$hh*(1-$i/29)]" info:`
convert rose_anim.gif -delay 10 \( rose: -virtual-pixel tile -distort SRT "0,0 1, 0, $ii,$jj" \) rose_anim.gif
done
convert rose_anim.gif -loop 0 rose_anim.gif
or
ww=`convert rose: -format "%w" info:`
hh=`convert rose: -format "%h" info:`
( for ((i=0; i<29; i++)); do
ii=`convert xc: -format "%[fx:-$ww*(1-$i/29)]" info:`
jj=`convert xc: -format "%[fx:-$hh*(1-$i/29)]" info:`
convert -delay 10 rose: -virtual-pixel tile -distort SRT "0,0 1, 0, $ii,$jj" miff:-
done ) |
convert - -loop 0 rose_anim2.gif
If you do not need the fractional pixel accuracy, you can substitute -roll for -virtual-pixel tile -distort SRT
see
http://www.imagemagick.org/script/comma ... h7b33#roll