GIF format
Byte Order: Little-endian
GIF Header
Offset Length Contents
0 3 bytes "GIF"
3 3 bytes "87a" or "89a"
6 2 bytes <Logical Screen Width>
8 2 bytes <Logical Screen Height>
10 1 byte bit 0: Global Color Table Flag (GCTF)
bit 1..3: Color Resolution
bit 4: Sort Flag to Global Color Table
bit 5..7: Size of Global Color Table: 2^(1+n)
11 1 byte <Background Color Index>
12 1 byte <Pixel Aspect Ratio>
13 ? bytes <Global Color Table(0..255 x 3 bytes) if GCTF is one>
? bytes <Blocks>
1 bytes <Trailer> (0x3b)
Image Block
Offset Length Contents
0 1 byte Image Separator (0x2c)
1 2 bytes Image Left Position
3 2 bytes Image Top Position
5 2 bytes Image Width
7 2 bytes Image Height
8 1 byte bit 0: Local Color Table Flag (LCTF)
bit 1: Interlace Flag
bit 2: Sort Flag
bit 2..3: Reserved
bit 4..7: Size of Local Color Table: 2^(1+n)
? bytes Local Color Table(0..255 x 3 bytes) if LCTF is one
1 byte LZW Minimum Code Size
[ // Blocks
1 byte Block Size (s)
(s)bytes Image Data
]*
1 byte Block Terminator(0x00)
Graphic Control Extension Block
Offset Length Contents
0 1 byte Extension Introducer (0x21)
1 1 byte Graphic Control Label (0xf9)
2 1 byte Block Size (0x04)
3 1 byte bit 0..2: Reserved
bit 3..5: Disposal Method
bit 6: User Input Flag
bit 7: Transparent Color Flag
4 2 bytes Delay Time (1/100ths of a second)
6 1 byte Transparent Color Index
7 1 byte Block Terminator(0x00)
Comment Extension Block
Offset Length Contents
0 1 byte Extension Introducer (0x21)
1 1 byte Comment Label (0xfe)
[
1 byte Block Size (s)
(s)bytes Comment Data
]*
1 byte Block Terminator(0x00)
Plain Text Extension Block
Offset Length Contents
0 1 byte Extension Introducer (0x21)
1 1 byte Plain Text Label (0x01)
2 1 byte Block Size (0x0c)
3 2 bytes Text Grid Left Position
5 2 bytes Text Grid Top Position
7 2 bytes Text Grid Width
9 2 bytes Text Grid Height
10 1 byte Character Cell Width(
11 1 byte Character Cell Height
12 1 byte Text Foreground Color Index(
13 1 byte Text Background Color Index(
[
1 byte Block Size (s)
(s)bytes Plain Text Data
]*
1 byte Block Terminator(0x00)
Application Extension Block
Offset Length Contents
0 1 byte Extension Introducer (0x21)
1 1 byte Application Label (0xff)
2 1 byte Block Size (0x0b)
3 8 bytes Application Identifire
[
1 byte Block Size (s)
(s)bytes Application Data
]*
1 byte Block Terminator(0x00)
GIF87a:
GIF Header
Image Block
Trailer
GIF89a:
GIF Header
Graphic Control Extension
Image Block
Trailer
GIF Animation
GIF Header
Application Extension
[
Graphic Control Extension
Image Block
]*
Trailer