convert *.jpg -resize 1600 -quality 70% -depth 72 -units pixelsperinch resized.jpg
convert *.jpg -resize "460x460^" -gravity center -crop 460x460+0+0 +repage crop.jpg
montage crop*.jpg -geometry 460x460+0+0 mosaic.jpg
convert *.png -append -scale 50% stacked.png
convert -delay 5 -loop 0 *.png ../animation.gif
thanks to http://blog.room208.org/post/48793543478
ffmpeg -i video.mov -r 10 -s 640x400 -f image2 frames/frame-%03d.png
-i video.movthe video file-r 10the rate-s 640x400the output size-f image2the output format, a series of still imagesframes/frame-%03d.pngis a printf format string specifying the output filenames, in this casedir/name-###.png, a series of PNG images called 001.png, 002.png, 003.png, and so on.
convert frames/*.png -delay 1x8 -coalesce -layers OptimizeTransparency animation.gif
frames/*.pnginput files-delay 1x8says that the animation should play a frame every 1/8 of a second. I computed this number by looking at the frame rate of the original video (24) and dividing by the number of frames each drawing plays for (3). Note that most browsers slow down animations that play faster than 20 frames per second, or 1/50 second per frame. Most videos play back at between 25 and 30 fps, so you may have to drop every other frame or so if you care about accuracy of playback speed.-coalesceapparently “fully define[s] the look of each frame of an [sic] GIF animation sequence, to form a ‘film strip’ animation,” according to the documentation.-layers OptimizeTransparencytells ImageMagick to replace portions of each frame that are identical to the corresponding parts of the preceding frame with transparency, saving on file size.animation.gifoutput file
convert ani.gif -coalesce ani.png
ffmpeg -f image2 -i ani-%d.png ani.mpg -vb 20M