UseFrames|| Synopsis || Description of options || Description of animation-types || Advanced options || Open Viewer Window

BlendGIF logo

Upload options from a file:      

and/or, select them using the following form!
How many
input files
(or URLs)?
Files on this server, URLS, upload files
(image #)
or grab from viewer window

# Iterations = Delay 1/100th seconds # Frames =
cycle back?
stop after?
suppress transparency
Fade accuracy:
Disposal:
# colors in
merged color table
:
Merge color tables by
Set background colors
Red:
Green:
Blue:
Size of image:
Width:
Height:
Attempt to minimize file size (by retaining only changed pixels)?
 
ADD This works well with image-specific transformations
Curtain
Overwrite...
Direction ...
Balloon
Shape...
Center at ...
Columns:
Rows:
Overwrite...
Dissolve Dissolve Spec:
Fade
Type of fade...
or enter an equation
using R, G, and B ...

Mask
Enter a space delimited list of MASK files (or URLS)


BlendGIF: Synopsis

BlendGif is used to create animated GIFS.

At it's simplest, BlendGif will combine several single-frame GIF files into a new, animated GIF file.

But that's just the beginning ....
BlendGif's real strength is it's ability to create intermediate images to be used as frames in the animated GIF. These intermediate images allow one to easily create fade, pan, dissolve, and other interesting effects.

Telling BlendGif what images to use

There are several ways you can tell BlendGif what images it should use:
  1. Enter a file name. BlendGif will look in it's special BLENDGIF ROOT directory (which is created by the webmaster) for a file of this name.

       Example: HELLO.GIF

  2. 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). Note: the URL must include the http://a.b.c/

       Example: http://www.census.gov/main/www/img/cb_head.gif

  3. 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.

  4. 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.

back to top...


Description of options

Uploading a BlendGIF option file
There are two ways of specifying your animated GIF:
  1. By using the fields on this form to choose options
  2. 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.
For example:
INFILE.0=2
INFILE.1=http://www.images.org/image1.gif
INFILE.2=http://manysites.net/~me/myface.gif
ANIM_TYPE=BALLOON
BALLOON_TYPE=CIRCLE
BALLOON_PUSH=OVERWRITE
For details on parameter names, please see the BlendGIF manual

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.
Notes:
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 option is chosen (otherwise, they are ignored).
    In addition to this automatic size computation, you can specify image-specific transformations.
    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).

    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.
    In other cases, enabling transparency can improve the image (as when trying to add images to pre-existing images).

    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).
    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.
    Note that the original images will be displayed with their own "local" color table.
    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:
    1. use the most frequent colors
    2. 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.
    3. 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. This color is used when you've selected no resizing of images, and an image is smaller then a user specified height and width. 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".

    back to top...


    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 and second image refers to images in an image-pair
    ADD The second image is added on top of the first image.
    Intermediate frames are not created -- the second image simply is placed on top of the first image.
    If you want to retain portions of the first image, so as to "sequentially build" a final image, you can:
    1. Use transformed images
    2. use images that have a lot of transparent pixels, in connjunction with the do not suppress transparency and the background disposal options.
    3. Special Note: You can create a moving-series of images (across a constant background) by using a series of values for when specifying image-specific transformations
    BALLOON The first image is replaced by an expanding "balloon" of the second image. Four balloon types are recognized:
    1. SQUARE: A square balloon
    2. DIAMOND: A diamond balloon
    3. OCTAGON: An octagon balloon
    4. CIRCLE: A circular balloon.
    Three overwrite modes are available:
    1. OVERWRITE: second image overwrites first image
    2. PUSH: second image "pushes" first image "off the screen".
    3. SQUOOSH: second image "squooshes" the first image "into oblivion".
    CURTAIN The second image is a curtain pulled over the first image
    • Two fractions (between 0 and 1) are used locate the center of the balloon.
    • There are three choices for which direction to draw the curtain:
      • Top to bottom
      • Left to right
      • Two curtains converging in the middle (from left and right)
    Three overwrite modes are available:
    1. OVERWRITE: second image overwrites first image
    2. PUSH: second image "pushes" first image "off the screen"
    3. SQUOOSH: second image "squooshes" first image "into oblivion"
    DISSOLVE The first image dissolves into the second image

    DISSOLVE works by randomly replacing image1 pixels with image2 pixels; with latter frames containing a greater proportion of image2 pixels.

    You can customize the speed of the dissolve by modifying the dissolve speed. This parameter should contain a space delimited list of integers between 0 (0 percent-- use image 1 pixels) to 100 (100 percent -- use image 2 pixels). These values are used to create a graph, with each frames "dissolve threshold" read from the graph.

    Examples:

    • 1 = a linear ramp (starting from 0 to 100)
    • 1 10 80 90 = start with a slow change, a quick jump, ending with a slow change
    FADE The first image fades into the second image. There are several ways of specifying a fade:
    • Frequency sorted color table. Fast, but not very pretty
    • Brightness sorted color table. Fast, and can be nice for fairly similar images.
    • Color specific brightness sort. Similar to above, but several different "sets of colors" are sorted, which can improve the smoothness of the fade.
    • Best match. Each pixel of each image is assigned a unique color, which is then mapped to the closest matching color in the global color table. This usually produces nicest fades, but can be slow to compute.
    • string. A string containing a math expression that uses the R G and B variables, to specify a color table sort.

      For example: 2*R + G would create fades from the darkest red to brightest red, with green counting somewhat (and blue not considered).

    MASK "Mask" files are used to overlay portions of the second image onto the first image. If a pixel value in a mask file pixel value is greater then 0, then the corresponding pixel in image 1 (the one at the same row and column position) is replaced with the corresponding image 2 pixel.

    Note that the mask files are either replicated or clipped to assure that their size corresponds to the size of the first image.

    back to top...


    Advanced options

    URL from VIEWER || Layering images || Image-pair options || Uploading images || Image-specific transformations || back to top...

    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 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.

    back to top...


    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.

    There are several tricks you can use to achieve a layering effect:


    Advanced options: Specifying image-pair specific parameters

    If you specified more then 2 images, you can set many options on an image-pair specific basis.
    The default options (set above) are used when you do not explicitliy enable image-pair specific options. For example: assuming you've specified 4 images: you could specify image-pair specific options for frames between the 2nd and 3rd images; and use the defaults for frames between the 1st and 2nd and between the 3rd and 4th image-pairs.
    Enable
    second
    to
    third

    image-pair
    options
     
    delay 1/100th seconds = # Frames = stop after?
    ADD
    Curtain
    Balloon

    Center Column:
    Center Row:
    Dissolve Dissolve Spec:
    Fade
    or an equation:
    Mask Enter a space delimited list of mask files (or urls)
    Enable
    third
    to
    fourth

    image-pair
    options
     
    delay 1/100th seconds = # Frames = stop after?
    ADD
    Curtain
    Balloon

    Center Column:
    Center Row:
    Dissolve Dissolve Spec:
    Fade
    or an equation:
    Mask Enter a space delimited list of mask files (or urls)
    Enable
    fourth
    to
    fifth

    image-pair
    options
     
    delay 1/100th seconds = # Frames = stop after?
    ADD
    Curtain
    Balloon

    Center Column:
    Center Row:
    Dissolve Dissolve Spec:
    Fade
    or an equation:
    Mask Enter a space delimited list of mask files (or urls)
    Enable
    fifth
    to
    sixth

    image-pair
    options
     
    delay 1/100th seconds = # Frames = stop after?
    ADD
    Curtain
    Balloon

    Center Column:
    Center Row:
    Dissolve Dissolve Spec:
    Fade
    or an equation:
    Mask Enter a space delimited list of mask files (or urls)
    Enable
    sixth
    to
    seventh

    image-pair
    options
     
    delay 1/100th seconds = # Frames = stop after?
    ADD
    Curtain
    Balloon

    Center Column:
    Center Row:
    Dissolve Dissolve Spec:
    Fade
    or an equation:
    Mask Enter a space delimited list of mask files (or urls)

    back to top...


    Advanced options: Uploading your own GIF files

    Instead of using files on this server, or files on websites, you can upload GIF files from your hard drive. To do so, select GIF files in the form below.
    If you leave an entry blank, the server-files or URLs (selected at the top of the form) will be used







    Ready to submit...

    Advanced options: Image-specific transformations

    By default, BlendGIF will resize all images to one size (for example, to the size of the first image). If desired, you can suppress this automatic resizing, and specify a set of image-specific scale, rotation, and translation options.

    Enable image 1
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    Enable image 2
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    Enable image 3
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    Enable image 4
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    Enable image 5
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    Enable image 6
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    Enable image 7
    transformations
    Transparent bkg
    New width:
    New height:
    Z rotation
    Y rotation
    X rotation
    Move right:
    Move down:
    back to top...

    The basic logic used in these image-specific transformations is:

    1. A box is generated, and filled with the background (bkg) color. The size of this box is determined by the define image size option.
    2. The image is resized to a new width and height (specified in pixels)
    3. The image is rotated around it's center (possibly in 3 dimensions)D
    4. The image is place in this box at the XMOVE and YMOVE coordinates.
    5. Pieces of this scaled, rotated, and translated image that fall outside of the box are clipped.
    The simplest case is to transform the image once, and ADD this transformed image to the original image (to the first image of an image-pair). However, you can also create a moving series of images (that is,a series of #FRAMES frames), with each frame the result of a different transformation. Each one of these series of images will be placed upon the original image in a non-cumulative fashion.

    To do this, use a space delimited list of values for the parameter(s) that will be changed. For example, a move-right value of:10 50 90 100 150 would cause a set of (#FRAMES) frames that show the image moving right across the screen.

    BlendGIF will match the relative frame number to the graph sketched by the values listed in a parameter. With creative specification, this gives a lot of flexibilty (i.e.; stop and reverse, speedups, slowdowns, etc.)

    back to top...