Format File GIF
Format
File GIF
Format file GIF ( Graphics Interchange Format) merupakan hasil rancangan CompuServe Incorporated. Format ini
dirancang untuk memudahkan pertukaran citra bitmap
antarkomputer. GIF hanya mendukung resolusi warna sampai 256 warna (8-bit) [HPJ90]
Format file GIF memiliki dua versi yaitu GIF 87a dan GIF89a. Versi GIF89a
diperkenalkan pada bulan Juli 1989 merupakan perbaikan dari versi GIF87a. Pada
GIF89a ditambahkan kemampuan untuk menampilkan citra dengan latar belakang
transparan ( background transparency),
penyimpanan data citra secara interlaced
dan kemampuan untuk menampilkan citra animasi.
GIF menggunakan variable-length code yang
merupakan modifikasi dari algoritma LZW (Lemple-Ziv
Wetch) untuk mengkompresi data citra. Teknik kompresi data ini mampu
menghasilkan kompresi yang baik dan merupakan teknik kompresi yang mampu
mengembalikan data sama persis dengan aslinya (lossless data comperssion).
Format
lengkap file citra GIF dapat dilihat
pada tabel berikut ini.
Tabel
2.4 Format File GIF
Name
|
Size
|
Description
|
|||
Signature
|
6 bytes
|
‘GIF87a’ or
‘GIF89a’
|
|||
Global Descriptor
|
7 bytes
|
Always present
|
|||
Width
|
2 bytes
|
Width in
pixels
|
|||
Height
|
2 bytes
|
Height in
pixels
|
|||
Flags
|
1 bytes
|
Global
descriptor flags
|
|||
Global
Color Map
|
Bit 7
|
=1 if Global
ColorMap exists (should be true in almost all cases)
=0 if default
map is used. Or if every citra has a Local Color Map
|
|||
Color
Resolution Bits
|
Bit 6-4
|
+1 =
significant bits per color in Global Color Map
|
|||
Reserved
|
Bit 3
|
= 0
|
|||
Pixel
Bits
|
Bit 2-0
|
+1 = Color
Depth, Number of Global Colors := 2colordepth
|
|||
Background
Color
|
1 byte
|
Background
color number (from Global Color Map or default map)
|
|||
Aspect
Ratio
|
1 byte
|
Usually =0
|
|||
Global Color Map
|
Number of
Global Colors * 3
|
Global color
table, present only when Global Descriptor Flags Global Color Map =1
|
|||
Red
|
1 byte
|
Red intensity
of color (not necessarily 8 significant bits)
|
|||
Green
|
1 byte
|
Green
intensity of color (not necessarily 8 significant bits)
|
|||
Blue
|
1 byte
|
Blue intensity
of color (not necessarily 8 significant bits)
|
|||
Repeated
Number Of Global Colors Times
|
|||||
Extension Blocks
|
Cannot be pre
calculated
|
Optional, may
be repeated any number of times. Read first byte to check its precense
|
|||
Header
|
1 byte
|
= $21
|
|||
Function
Code
|
1 byte
|
There is a
list of known function codes
|
|||
Length
|
1 byte
|
>0 !
|
|||
Data
|
Length bytes
|
Interpretation
of this data depends on its function code
|
|||
Repeated any
number of times. Read first byte to check for terminator
|
|||||
Terminator
|
1 byte
|
= 0
|
|||
Local Descriptor
|
10 bytes
|
Local
descriptor, always present
|
|||
Header
|
1 bytes
|
=$2C
|
|||
Pos
X
|
2 bytes
|
Horizontal
position of citra in global citra
|
|||
Pos
Y
|
2 bytes
|
Vertical position
of citra in global citra
|
|||
Width
|
2 bytes
|
Width of citra
|
|||
Height
|
2 bytes
|
Height of
citra
|
|||
Flags
|
1 bytes
|
Local
descriptor Flags
|
|||
Local
Color Map
|
Bit 7
|
=1 if Local
Color Map exists
=0 if Global
Color Map (or default map) is used
|
|||
Interlaced
Citra
|
Bit 6
|
=1 Interlaced!
=0 Non
Interlaced
|
|||
Sorted
|
Bit 5
|
Usually =0
|
|||
Reserved
|
Bit 4-3
|
=0
|
|||
Pixel
Bits
|
Bit 2-0
|
-1= Color
Depth,
Number of
Local Colors := 2color depth
|
|||
Local Color Map
|
Number of Local Color * 3
|
Local color
table, present only when local Descriptor Flags. Local Color Map =1
|
|||
Red
|
1 byte
|
Red intensity
of color
|
|||
Green
|
1 byte
|
Green
intensity of color
|
|||
Blue
|
1 byte
|
Blue intensity
of color
|
|||
Repeated
number of Local Color times
|
|||||
Rasted DataBlock
|
Cannot be pre
calculated
|
Always present
|
|||
Initial
Code Size
|
1 byte
|
Usually =
Color Depth, except for balck & white, where it is 2!
|
|||
Length
|
1 byte
|
>0
|
|||
Data
|
Length bytes
|
The pixel data
bit stream. See decompression and compression schemes
|
|||
Repeated any
number of times, read first byte to check for terminator
|
|||||
Terminator
|
1 byte
|
=0!
|
|||
Extension Blocks
|
Cannot be pre
calculated
|
Optional. Read
first byte to check its presence
|
|||
Format is
identical to the Extension Block above
|
|||||
Terminator
|
1 byte
|
=$3B
|
|||