Optimizing Animated GIFs / Crop with Frame Optimization
Crop with Frame Optimization
Optimizing Animated GIFs
The GIF89a spec includes position values for each frame, so smaller frames can be positioned inside the animation. You can use this option is to create the illusion of movement of a static object, for example a football floating by. You can specify the position within the animation of the rectangle that bounds only the football.
Frame positioning also lets you isolate the elements that change from frame to frame, and position them within the animation. GIFBuilder's "frame optimization" feature automatically crops away the non-changing areas in all but the first frame and keeps the rectangle that bounds the area(s) that change. The first frame acts as a background, and subsequent smaller frames layer over it. The resulting file can be dramatically smaller, as you aren't storing the entire frame, just the part that changes.
Combining frame optimization with the frame differencing stores only the pixels that actually change. I found that using the full-frame differences and letting GIFBuilder do the cropping and positioning was the best way to retain registration (see Figures 19-21).
Frame Optimization Method Comparison
Fig. 19: Min. Bounding Rectangle
Fig. 20: Frame differencing
Fig. 21: LZW optimization
Of course, if you have Web access you can follow the instructions above except leave your animation full-frame. Browse on over to http://www.gifwizard.com and run it through. GIF Wizard automatically does:
- Minimum bounding rectangle crop
- Frame difference (saves only pixels that change)
- LZW optimization (equalizes pixel patterns for better compression)
all in one pass.
GIF Wizard Tips
- Page at a time
- In addition to optimizing GIFs off the Web or your hard drive, you can optimize an entire page at a time. Just type in the URL of the page you want optimized and it'll shrink all your GIFs!
- Run it twice
- GIF Wizard adds a comment block if it shrinks your file by more than 2% or 200 bytes. To remove this block just run it a second time.
|intro ->||background||color palettes||frame optimization|
|results||tutorial||reduce palette||frame differencing|
Comments are welcome
Created: Oct. 7, 1996
Revised: Oct. 18, 1999