The Graphics Interchange Format (tm) was created by Compuserve Inc. as a standard for the storage and transmission of raster-based graphics information, i.e. images. A GIF file may contain several images, which are to be displayed overlapping and without any delay betwenn the images. The image data itself is compressed using a LZW scheme. Please note that the LZW algorithm is patented by UniSys and that since Jan. 1995 royalties to Compuserve are due for every software that implements GIF images. The GIF file consists of a global GIF header, one or more image blocks and optionally some GIF extensions. OFFSET Count TYPE Description 0000h 6 char ID='GIF87a', ID='GIF89a' This ID may be viewed as a version number 0006h 1 word Image width 0008h 1 word Image height 000Ah 1 byte bit mapped 0-2 - bits per pixel -1 3 - reserved 4-6 - bits of color resolution 7 - Global color map follows image descriptor 000Bh 1 byte Color index of screen background 000Ch 1 byte reserved The global color map immediately follows the screen descriptor and has the size (2**BitsPerPixel), and has the RGB colors for each color index. 0 is none, 255 is full intensity. The bytes are stored in the following format : OFFSET Count TYPE Description 0000h 1 byte Red component 0001h 1 byte Green component 0002h 1 byte Blue component After the first picture, there may be more pictures attached in the file whic overlay the first picture or parts of the first picture. The Image Descriptor defines the actual placement and extents of the following image within the space defined in the Screen Descriptor. Each Image Descriptor is introduced by an image separator character. The role of the Image Separator is simply to provide a synchronization character to introduce an Image Descriptor, the image separator is defined as ",", 02Ch, Any characters encountered between the end of a previous image and the image separator character are to be ignored. The format of the Image descriptor looks like this : OFFSET Count TYPE Description 0000h 1 char Image separator ID=',' 0001h 1 word Left offset of image 0003h 1 word Upper offset of image 0005h 1 word Width of image 0007h 1 word Height of image 0009h 1 byte Palette description - bitmapped 0-2 - Number of bits per pixel-1 3-5 - reserved (0) 6 - Interlaced / sequential image 7 - local / global color map, ignore bits 0-2 To provide for some possibility of an extension of the GIF files, a special extension block introducer can be added after the GIF data block. The block has the following structure : OFFSET Count TYPE Description 0000h 1 char ID='!' 0001h 1 byte Extension ID 0002h ? rec 1 word Byte count ? byte Extra data ????h 1 byte Zero byte count - terminates extension block. EXTENSION:GIF OCCURENCES:PC PROGRAMS:CSHOW.EXE SEE ALSO: VALIDATION:
This information is from Corion.net and is used with permission.