GIF FILE FORMAT
BASICS
Introduction
GIF is CompuServe's standard for graphics image data exchange. There are currently two versions (GIF standards): GIF87a and GIF89a. The differences between two formats are minor.
Number of colors
Today, main disadvantage of GIF is the number of colors that can be used for representing image data. Bit depth of an image can be no more then 8 bits per pixel which means that maximum of 256 different colors can be found in a single GIF image.
Animation
The file containing GIF data may consist of sequence of images thus representing animation. Images are dumped out to the screen with or without pause between them. Animated GIFs are today widely used by the WEB creators.
Compression
Image data in the GIF file format is compressed using modified LZW (Lempel-Ziv Welch) algorithm.
DETAILS
GIF header
GIF header size is 6 bytes. First 3 bytes are representing GIF signature that identifies GIF data. These 3 bytes are containing string value "GIF". Second 3 bytes are representing version number. Version number is actually string containing either "87a" or "89a". Version numbers are ordered numerically by the first two bytes and than alphabetically by the third byte. GIF header must be present at the start of each GIF file.
Logical screen descriptor
Logical screen descriptor must follow GIF header. It is used to determine the area in which the bitmap data will be dumped out. The coordinates given in a logical screen descriptor are relative to the virtual screen of the target device. Target device can be either part of the screen which will be used for image dump out or full screen. In logical screen descriptor are given width and height of the virtual screen, background color index. There can be also found size of the global color table (that is used to render images that are given without local color table), and flag that is indicating that the global color table is sorted by decreasing order of the color importance. That means that most significant color will be first in the color table, and the last significant color will be last in the color table.
Global color table
Global color table is used to render images that are given without local color table. Usually in animated GIFs there is global color table and no local color tables so global color table is used to render all images found in the rest of data stream that follows. Size and presence of the global color table is determined by reading the logical screen descriptor.
Image descriptor
Image descriptor contains information about image data that follows. It contains width and height of the image data that will be dumped out, image top and left position with respect to the logical screen set by logical screen descriptor. The presence of image's local color table is also determined from image descriptor structure. Image can be interlaced or non interlaced. If non interlaced image data is stored in data stream from up to bottom, and left to right. That means that the first pixel read from data stream will be the first pixel in the upper left corner, and the last pixel in the data stream will be the last pixel in the bottom right corner. Else, if image is interlaced than the special output scheme is used to render image. Image is then rendered in 4 passes. In first pass every 8th row is rendered starting from row 0 (0, 8, 16, 24, etc.). In second pass every 8th row is rendered starting from row 4 (4, 12, 20, 28, etc.). Third pass render's every 4th row starting with row 2 (2, 6, 10, 14, etc.). The final pass renders all remaining rows - every 2nd row starting witch row 1 (1, 3, 5, 7, etc.).
Local color table
Local color table is used to render image that follows it. If there is no local color table, image that follows image descriptor is rendered using global color table. Size and presence of the local color table is determined by reading image descriptor.
Image data
First byte in the image data represents minimum code size used to decompress data. Following minimum code size are image data blocks. Image data is block based meaning that the first byte represents the size of a block, and the following bytes represent image data. Last block is determined by the size of 0 (empty block). Image data is compressed modified version of LZW algorithm.
Trailer
Trailer (fixed value of 0x3B) is used to indicate the end of GIF data stream.
Extension blocks
GIF version 89a defines 4 extension blocks. They are:
Graphics control extension block defines parameters that are used with image rendering. It contains various parameter such as transparent color index, delay time before rendering image data, disposal method, etc...
Comment extension block is used to put data that is not actually part of image data into GIF data stream. It is useful for putting various information in it.
Plain text extension block contains textual data and all information necessary to render textual data in graphical screen.
Application extension block is used by application to put in various application specific data.
struct tagGIFVersion {
BYTE bNum[2];
char chAlpha;
};
struct tagMISCScreenDesc {
BYTE bGlobalColorTableSize:3;
BYTE bSortFlag:1;
BYTE bColorResolution:3;
BYTE bGlobalColorTableFlag:1;
};
struct tagScreenDescriptor {
WORD wWidth;
WORD wHeight;
struct tagMISCScreenDesc bMISC;
BYTE bBackgroundColor;
BYTE bPixelAspectRatio;
};
struct tagColorMap {
BYTE bRed;
BYTE bGreen;
BYTE bBlue;
};
struct tagMISCImageDesc {
BYTE bLocalColorTableSize:3;
BYTE bReserved:2;
BYTE bSortFlag:1;
BYTE bInterlaceFlag:1;
BYTE bLocalColorTableFlag:1;
};
struct tagImageDescriptor {
WORD wImageLeft;
WORD wImageTop;
WORD wImageWidth;
WORD wImageHeight;
struct tagMISCImageDesc bMISC;
};
struct tagColorMap {
BYTE bRed;
BYTE bGreen;
BYTE bBlue;
};
struct tagMISCGraphicControl {
BYTE bTransparentColorFlag:1;
BYTE bUserInputFlag:1;
BYTE bDisposalMethod:3;
BYTE bReserved:3;
};
struct tagGraphicControl {
BYTE bBlockSize;
struct tagMISCGraphicControl bMISC;
WORD wDelayTime;
BYTE bTransparentColorIndex;
};
struct tagPlainText {
BYTE bBlockSize;
WORD wTextGridLeft;
WORD wTextGridTop;
WORD wTextGridWidth;
WORD wTextGridHeight;
BYTE bCellWidth;
BYTE bCellHeight;
BYTE bForeColor;
BYTE bBackColor;
};
struct tagApplicationBlock {
BYTE bBlockSize;
char pchIdent[8];
BYTE bAuthent[3];
};
EXAMPLE
Text dump of the sample GIF file
General Info:
=============
File name: sample.gif
Signature: GIF
Version: 87a
Screen Descriptor:
==================
Screen width: 32
Screen height: 32
Global color map exists: Yes
Bits per pixel for global color map: 8
Background color index: 0
Global color map sorted (89a+): Not supported by this version of GIF.
Bits per pixel of the original palette: 8
Aspect ratio (89a+): Not supported by this version of GIF.
Global Color Map (RGB format):
==============================
0. 0xc6 0xc6 0xc6
1. 0xff 0x00 0x00
2. 0xff 0xff 0xff
3. 0xff 0xff 0xff
4. 0xff 0xff 0xff
5. 0xff 0xff 0xff
6. 0xff 0xff 0xff
7. 0xff 0xff 0xff
8. 0xff 0xff 0xff
9. 0xff 0xff 0xff
10. 0xff 0xff 0xff
11. 0xff 0xff 0xff
12. 0xff 0xff 0xff
13. 0xff 0xff 0xff
14. 0xff 0xff 0xff
15. 0xff 0xff 0xff
16. 0xff 0xff 0xff
17. 0xff 0xff 0xff
18. 0xff 0xff 0xff
19. 0xff 0xff 0xff
20. 0xff 0xff 0xff
21. 0xff 0xff 0xff
22. 0xff 0xff 0xff
23. 0xff 0xff 0xff
24. 0xff 0xff 0xff
25. 0xff 0xff 0xff
26. 0xff 0xff 0xff
27. 0xff 0xff 0xff
28. 0xff 0xff 0xff
29. 0xff 0xff 0xff
30. 0xff 0xff 0xff
31. 0xff 0xff 0xff
32. 0xff 0xff 0xff
33. 0xff 0xff 0xff
34. 0xff 0xff 0xff
35. 0xff 0xff 0xff
36. 0xff 0xff 0xff
37. 0xff 0xff 0xff
38. 0xff 0xff 0xff
39. 0xff 0xff 0xff
40. 0xff 0xff 0xff
41. 0xff 0xff 0xff
42. 0xff 0xff 0xff
43. 0xff 0xff 0xff
44. 0xff 0xff 0xff
45. 0xff 0xff 0xff
46. 0xff 0xff 0xff
47. 0xff 0xff 0xff
48. 0xff 0xff 0xff
49. 0xff 0xff 0xff
50. 0xff 0xff 0xff
51. 0xff 0xff 0xff
52. 0xff 0xff 0xff
53. 0xff 0xff 0xff
54. 0xff 0xff 0xff
55. 0xff 0xff 0xff
56. 0xff 0xff 0xff
57. 0xff 0xff 0xff
58. 0xff 0xff 0xff
59. 0xff 0xff 0xff
60. 0xff 0xff 0xff
61. 0xff 0xff 0xff
62. 0xff 0xff 0xff
63. 0xff 0xff 0xff
64. 0xff 0xff 0xff
65. 0xff 0xff 0xff
66. 0xff 0xff 0xff
67. 0xff 0xff 0xff
68. 0xff 0xff 0xff
69. 0xff 0xff 0xff
70. 0xff 0xff 0xff
71. 0xff 0xff 0xff
72. 0xff 0xff 0xff
73. 0xff 0xff 0xff
74. 0xff 0xff 0xff
75. 0xff 0xff 0xff
76. 0xff 0xff 0xff
77. 0xff 0xff 0xff
78. 0xff 0xff 0xff
79. 0xff 0xff 0xff
80. 0xff 0xff 0xff
81. 0xff 0xff 0xff
82. 0xff 0xff 0xff
83. 0xff 0xff 0xff
84. 0xff 0xff 0xff
85. 0xff 0xff 0xff
86. 0xff 0xff 0xff
87. 0xff 0xff 0xff
88. 0xff 0xff 0xff
89. 0xff 0xff 0xff
90. 0xff 0xff 0xff
91. 0xff 0xff 0xff
92. 0xff 0xff 0xff
93. 0xff 0xff 0xff
94. 0xff 0xff 0xff
95. 0xff 0xff 0xff
96. 0xff 0xff 0xff
97. 0xff 0xff 0xff
98. 0xff 0xff 0xff
99. 0xff 0xff 0xff
100. 0xff 0xff 0xff
101. 0xff 0xff 0xff
102. 0xff 0xff 0xff
103. 0xff 0xff 0xff
104. 0xff 0xff 0xff
105. 0xff 0xff 0xff
106. 0xff 0xff 0xff
107. 0xff 0xff 0xff
108. 0xff 0xff 0xff
109. 0xff 0xff 0xff
110. 0xff 0xff 0xff
111. 0xff 0xff 0xff
112. 0xff 0xff 0xff
113. 0xff 0xff 0xff
114. 0xff 0xff 0xff
115. 0xff 0xff 0xff
116. 0xff 0xff 0xff
117. 0xff 0xff 0xff
118. 0xff 0xff 0xff
119. 0xff 0xff 0xff
120. 0xff 0xff 0xff
121. 0xff 0xff 0xff
122. 0xff 0xff 0xff
123. 0xff 0xff 0xff
124. 0xff 0xff 0xff
125. 0xff 0xff 0xff
126. 0xff 0xff 0xff
127. 0xff 0xff 0xff
128. 0xff 0xff 0xff
129. 0xff 0xff 0xff
130. 0xff 0xff 0xff
131. 0xff 0xff 0xff
132. 0xff 0xff 0xff
133. 0xff 0xff 0xff
134. 0xff 0xff 0xff
135. 0xff 0xff 0xff
136. 0xff 0xff 0xff
137. 0xff 0xff 0xff
138. 0xff 0xff 0xff
139. 0xff 0xff 0xff
140. 0xff 0xff 0xff
141. 0xff 0xff 0xff
142. 0xff 0xff 0xff
143. 0xff 0xff 0xff
144. 0xff 0xff 0xff
145. 0xff 0xff 0xff
146. 0xff 0xff 0xff
147. 0xff 0xff 0xff
148. 0xff 0xff 0xff
149. 0xff 0xff 0xff
150. 0xff 0xff 0xff
151. 0xff 0xff 0xff
152. 0xff 0xff 0xff
153. 0xff 0xff 0xff
154. 0xff 0xff 0xff
155. 0xff 0xff 0xff
156. 0xff 0xff 0xff
157. 0xff 0xff 0xff
158. 0xff 0xff 0xff
159. 0xff 0xff 0xff
160. 0xff 0xff 0xff
161. 0xff 0xff 0xff
162. 0xff 0xff 0xff
163. 0xff 0xff 0xff
164. 0xff 0xff 0xff
165. 0xff 0xff 0xff
166. 0xff 0xff 0xff
167. 0xff 0xff 0xff
168. 0xff 0xff 0xff
169. 0xff 0xff 0xff
170. 0xff 0xff 0xff
171. 0xff 0xff 0xff
172. 0xff 0xff 0xff
173. 0xff 0xff 0xff
174. 0xff 0xff 0xff
175. 0xff 0xff 0xff
176. 0xff 0xff 0xff
177. 0xff 0xff 0xff
178. 0xff 0xff 0xff
179. 0xff 0xff 0xff
180. 0xff 0xff 0xff
181. 0xff 0xff 0xff
182. 0xff 0xff 0xff
183. 0xff 0xff 0xff
184. 0xff 0xff 0xff
185. 0xff 0xff 0xff
186. 0xff 0xff 0xff
187. 0xff 0xff 0xff
188. 0xff 0xff 0xff
189. 0xff 0xff 0xff
190. 0xff 0xff 0xff
191. 0xff 0xff 0xff
192. 0xff 0xff 0xff
193. 0xff 0xff 0xff
194. 0xff 0xff 0xff
195. 0xff 0xff 0xff
196. 0xff 0xff 0xff
197. 0xff 0xff 0xff
198. 0xff 0xff 0xff
199. 0xff 0xff 0xff
200. 0xff 0xff 0xff
201. 0xff 0xff 0xff
202. 0xff 0xff 0xff
203. 0xff 0xff 0xff
204. 0xff 0xff 0xff
205. 0xff 0xff 0xff
206. 0xff 0xff 0xff
207. 0xff 0xff 0xff
208. 0xff 0xff 0xff
209. 0xff 0xff 0xff
210. 0xff 0xff 0xff
211. 0xff 0xff 0xff
212. 0xff 0xff 0xff
213. 0xff 0xff 0xff
214. 0xff 0xff 0xff
215. 0xff 0xff 0xff
216. 0xff 0xff 0xff
217. 0xff 0xff 0xff
218. 0xff 0xff 0xff
219. 0xff 0xff 0xff
220. 0xff 0xff 0xff
221. 0xff 0xff 0xff
222. 0xff 0xff 0xff
223. 0xff 0xff 0xff
224. 0xff 0xff 0xff
225. 0xff 0xff 0xff
226. 0xff 0xff 0xff
227. 0xff 0xff 0xff
228. 0xff 0xff 0xff
229. 0xff 0xff 0xff
230. 0xff 0xff 0xff
231. 0xff 0xff 0xff
232. 0xff 0xff 0xff
233. 0xff 0xff 0xff
234. 0xff 0xff 0xff
235. 0xff 0xff 0xff
236. 0xff 0xff 0xff
237. 0xff 0xff 0xff
238. 0xff 0xff 0xff
239. 0xff 0xff 0xff
240. 0xff 0xff 0xff
241. 0xff 0xff 0xff
242. 0xff 0xff 0xff
243. 0xff 0xff 0xff
244. 0xff 0xff 0xff
245. 0xff 0xff 0xff
246. 0xff 0xff 0xff
247. 0xff 0xff 0xff
248. 0xff 0xff 0xff
249. 0xff 0xff 0xff
250. 0xff 0xff 0xff
251. 0xff 0xff 0xff
252. 0xff 0xff 0xff
253. 0xff 0xff 0xff
254. 0xff 0xff 0xff
255. 0xff 0xff 0xff
Image Descriptor:
=================
Relative start of image from left: 0
Relative start of image from top: 0
Image width: 32
Image height: 32
Image is interlaced: No
Local color map exists: No
Image Data:
===========
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00
0x00 0x01 0x01 0x01 0x01 0x02 0x02 0x02 0x02 0x01
0x02 0x02 0x02 0x02 0x02 0x02 0x01 0x02 0x02 0x02
0x02 0x01 0x01 0x02 0x02 0x02 0x02 0x02 0x01 0x01
0x01 0x00 0x00 0x01 0x01 0x01 0x02 0x02 0x01 0x01
0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02
0x01 0x01 0x02 0x02 0x01 0x02 0x02 0x01 0x01 0x02
0x02 0x01 0x01 0x00 0x00 0x01 0x01 0x01 0x02 0x02
0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01
0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x02 0x02 0x01
0x01 0x02 0x02 0x01 0x01 0x00 0x00 0x01 0x01 0x01
0x02 0x02 0x01 0x01 0x01 0x01 0x01 0x01 0x02 0x02
0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x02
0x02 0x01 0x01 0x02 0x02 0x01 0x01 0x00 0x00 0x01
0x01 0x01 0x02 0x02 0x02 0x01 0x01 0x01 0x01 0x01
0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02
0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01 0x00
0x00 0x01 0x01 0x01 0x01 0x02 0x02 0x02 0x01 0x01
0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01
0x02 0x02 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01
0x01 0x00 0x00 0x01 0x01 0x01 0x01 0x01 0x02 0x02
0x02 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02
0x01 0x01 0x02 0x02 0x01 0x02 0x02 0x02 0x02 0x02
0x01 0x01 0x01 0x00 0x00 0x01 0x01 0x01 0x01 0x01
0x01 0x02 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01
0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x02 0x02 0x01
0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02
0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x02
0x02 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x01
0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01
0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02
0x01 0x02 0x02 0x01 0x01 0x01 0x01 0x01 0x01 0x00
0x00 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02
0x01 0x01 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01
0x02 0x02 0x01 0x02 0x02 0x01 0x01 0x01 0x01 0x01
0x01 0x00 0x00 0x01 0x01 0x01 0x01 0x02 0x02 0x02
0x02 0x01 0x01 0x01 0x02 0x02 0x01 0x01 0x01 0x02
0x02 0x02 0x02 0x01 0x01 0x02 0x02 0x01 0x01 0x01
0x01 0x01 0x01 0x00 0x00 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00 0x00
0x00 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01
0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00
COPYRIGHTS
The Graphics Interchange Format(c) is the Copyright
property of CompuServe Incorporated. GIF(sm) is a Service Mark property of
CompuServe Incorporated.
HomePage - Basic
Facts -Commercial - Algorithms
- Hardware - FAQ - Glossary
![]()
Maintained and Copyrighted © 1997-2000 by DataCompression Reference Center
![]()