BlendGif Manual

By Daniel Hellerstein

BlendGIF Options
In addition to this help file, you might find the BlendGIF manual useful

Telling BlendGif what images to use
There are several ways you can tell BlendGif what GIF images to use:
 * A file on this server.:BlendGif will look in the IMGLIB subdirectory of the special BLENDGIF ROOT directory (which is created by the webmaster) for a file of this name. Example: HELLO.GIF
 * GET an image from another server.:Enter a fully qualified URL. This should be a URL pointing to GIF file anywhere on the net. BlendGIF will use socket calls to retrieve this image (assuming it's not password protected).Example: http://www.census.gov/main/www/img/cb_head.gif
 * Upload a file from your hard drive.:If you are using a modern browser (NetScape 2.01 and above), you can upload a GIF file from your hard drive. All you have to do is enter it's name (or you can use a BROWSE button) in the Uploading your own GIF files section.
 * Retrieve the URL of an image that is being displayed in the VIEWER window.:As a visual aide, you can tell the browser to retrieve the URL-string of a GIF file currently being displayed in the VIEWER window. This is a trick that allows you to preview the image you want to "blend", and saves you typing (or cutting and pasting) it's URL. However, due to JavaScript security, you can ONLY retrieve a URL-string that points to this server.

Description of options
For example:  For details on parameter names, please see the BlendGIF manual
 * Uploading a BlendGIF option file
 * There are two ways of specifying your animated GIF:
 * By using the fields on this form to choose options
 * By uploading a special BlendGIF input file The second option requires that you create an ascii (text) file on your machine, and enter it's name in the Upload load options from a file field. This file should contain a list of option names, and their values.

 Notes:
 * The list of GIF images to "blend" 
 * You can specify up to 7 images to "blend". You can also select which "frame", in an animated GIF, to use.
 * you can enter a file name or a URL
 * URLs must start with http://
 * Filenames are relative to this server's "BlendGif" directory
 * BLENDGIF will use socket calls to retrieve URLS. The content returned from the server must have a content-type response header of image/gif.
 * the file must be a GIF file (BMP, JPEG, etc. will not be read).
 * the size of the animated gif is set by the Size of image option (with possible modifications via the image-specific transformations)
 * Advanced option: Instead of a server-file or a URL, you can upload your own GIF files


 * Image number: This image number refers to a frame within an animated gif - this option allows you to pluck one of the frames from a pre-existing animated GIF . If the GIF file you wish to use is not an animated GIF, the image number is ignored (since there is only one image to choose from).
 * Number of times to display the set of images: Iterations should be an integer greater then 0.
 * Delay between frames: In 1/100th seconds. Thus, a value of 50 means 1/2 second.
 * Number of frames between each image pair: More frames means smoother transitions, but also means larger files and longer processing time.
 * Cycle images back to first image: You can create a "cyclical" animated GIF, with the display of intermediate images reversed. This is a nice way of smoothing repeated displays, you avoid discontinuous jumps between the last and first image. Alternatively, one could specify a sequence of images that start with a first image, have the "last" image in the middle, and end with the first image - but that doubles the processing time required.
 * Setting the size of the image: There are three choices:
 * Use the size of the first image
 * Use the maximum height, and maximum width - where the maximum is computed over all images
 * Specify a width and height The Width and height fields are only used when the Specify a width and height</tt> option is chosen (otherwise, they are ignored).

In addition to this automatic size computation, you can specify image-specific transformations. Caution: the results of this "shrinkage" may cause some browsers to crash! This requires a browser that suports maintained connections</tt> Instead, save it as a temporary file, which you can then obtain (by clicking on a link). If you want to save your results, use this option Note that the temporary file will be retained (on this server) for a short time period.
 * Attempt to minimize the size of the final GIF file: By default, BlendGIF uses a fairly inefficient method of storing image information: each frame contains a complete image. That is, each frame of the animated GIF "covers" the full width and height of the image. Since in many cases only a fraction of the pixels change between frames, the size of the final image ile can be substantially reduced by using "retain prior image" features of the GIF standard. You can instruct BlendGIF to attempt to shrink the file size (using this retain prior image trick). This requires an additional step, which is attempted after all frames have been computed (hence, it requires additional processing time).
 * Immediately upload image: After BlendGIF constructs your animated GIF, it can either:
 * Immediately transfer it to you.
 * Do not immediately transfer the image.

In other cases, enabling transparency can improve the image (as when trying to add images to pre-existing images).
 * Stop after this many frames: Instead of creating all the frames, stop after you've drawn this many framees. This can create some interesting partial replacements, especially when combined with the cycle-back option. To suppress this trick (that is, to display all the frames), leave this field blank.
 * Suppress transparency: If selected then either:
 * none of the images in the animated gif will be "transparent".
 * The "intermediate" frames will not be transparent
 * Any frame may be transparent When not explicitly disabled, transparency is based on whether the specified images were transparent. In some cases, transparency seems to cause odd problems, which can be solved by enabling this option.


 * Set the accuracy of "best fades"
 * Processing fades requires matching colors determined on the fly to a color in the global color table. To expedite this process, a 3 dimensional index is created. You can set the size of this index - larger values tend to yield smoother fades, but can greatly increase processing time. The default value (16) seems to be a reasonable compromise between speed and quality.


 * Image disposal
 * How to dispose of images. When using automatic resizing this parameter may have little effect. However, when using image-specific transformations, this can have a major impact (on whether prior images are retained or erased).

Note that the original images will be displayed with their own "local" color table.
 * Colors in merged color table
 * The length of the "global" color table BlendGif will create a combined color table using all the images you specify. This "global" color table is used to display the intermediate images.


 * Merge color table by
 * It's quite possible that the combined number of colors (in the merged color table) is greater then 256 (256 is the maximum number of colors a GIF can use), In such cases, BlendGif will need to pick and choose which colors to use. CT_MAKE_SPEC is used to select from three different methods:
 * use the most frequent colors
 * use the most frequent colors, but also use some "average" colors (these are chosen to minimize the "distance" of all colors in all images to the closest color in the global color table.
 * similar to 2, but create more of the "average" colors. Method 1 is fastest, but may do a bad job of displaying infrequently used colors. Methods 2 and 3 provide some insurance against this problem, but are slower.


 * Background colors
 * These values are used for pixel 0</tt>. This color is used when you've selected no resizing</tt> of images, and an image is smaller then a user specified height and width</tt>. Note that Pixel 0 is displayed when transparency is turned off. You should enter a value between 0 and 255 (inclusive) -- where 0 is "no color" and 255 is "maxiumum brightness".

Description of animation-types
Several types of blending (animation types) are supported, each of which can be further modified using one or several parameters.

In the following descriptions, first</tt> and  image</tt> refers to images in an image-pair

Advanced options: Grabbing a URL from the VIEWER window
As an aid to us lazy folks, you can use the VIEWER window to search for images, and then tell BlendGif to use them. With one large exception, this is easily done by:


 * 1) Opening up a [javascript:reset_viewer VIEWER window]
 * 2) Using everyday browser features (such as right-mouse-button on an embedded GIF image), view a GIF in this VIEWER window (not the document in which the GIF is embedded -- you must view the GIF itself)
 * 3) Click the appropriate grab from viewer window button.

But there is that crucial caution: the images you grab must be on this server. If not, JavaSript security may kick in, and shutdown your browser.

Advanced options: Layering images (on top of prior images)
When BlendGIF creates an animated GIF, it's usual mode of operation is to completely replace one image with a new image; where this new image is either an "intermediate" frame, or the next image you specified. In cases where one wants to "layer" images (that is, to paste new images on top of previous images), BlendGIF's usual  mode is inappropriate.

However, the ADD animation type, in combination with image-specific transformations, can be used to create layered images.


 * You'll need to specify the same image file (or URL) for several images, and then select your desired image-specific transformations (say, successively larger rightward shifts).
 * When you specify multiple values in one of the image-specific transformation fields, the images are non-cumulative. However, they are layered on top of the prior image, and the last frame in such a series will be retained.
 * You probably should specify an explicit image size greater then the images you are layering

You can also achieve some "layering" effects by:


 * using the stop-after</tt> and the  # of frames </tt> parameter equal to 1, and use image-specific transformations.
 * It's a bit of a hack, but if your images have a lot of "transparent" pixels, you can select Do NOT suppress transparency</tt> and select the retain</tt> disposal option