You are on page 1of 4

1.

CARA PEMBACAAN FILE


Tiap file terdiri dari :
1. File header
2. Bitmap header
3. Color map (kecuali untuk image 24 bit)
4. Bitmap data
Proses pembacaan data per byte dilakukan per urutan dari atas ke bawah seperti gambar berikut :

Struktur data utama :


Fileheader = record
bfType : ShortString ;
bfSize : longword;
bfOffBits : longword;
end;
InfoHeader = record
biSize : LongWord ;
biWidth : dword;
biHeight : dword;
biPlanes : word;
biBitCount : word;
biCompression : longword;
biSizeImage : longword;
biXPelsPerMeter : longword;
biYPelsPerMeter : longword;
biClrUsed : longword;
biClrImportant : longword;
end;
Membaca data pada File Header :
procedure TForm1.setFileHeadder(HeaderBuf : HeadBuffer) ;
begin
with myfileheader do
begin
bfType:=chr(HeaderBuf[0])+chr(HeaderBuf[1]);
bfSize:=conv.hextodec(conv.dectohex(HeaderBuf[5])+
conv.dectohex(HeaderBuf[4])+
conv.dectohex(HeaderBuf[3])+
conv.dectohex(HeaderBuf[2]));
bfOffBits:=conv.hextodec(conv.dectohex(HeaderBuf[13])+
conv.dectohex(HeaderBuf[12])+
conv.dectohex(HeaderBuf[11])+
conv.dectohex(HeaderBuf[10]));
end;
end;

Membaca data pada Info Header :


procedure TForm1.setInfoHeadder(HeaderBuf : HeadBuffer) ;
begin
with myinfoheader do
begin
biSize :=conv.hextodec(conv.dectohex(HeaderBuf[17])+
conv.dectohex(HeaderBuf[16])+ conv.dectohex(HeaderBuf[15])+
conv.dectohex(HeaderBuf[14]));
biWidth:=conv.hextodec(conv.dectohex(HeaderBuf[21])+
conv.dectohex(HeaderBuf[20])+ conv.dectohex(HeaderBuf[19])+
conv.dectohex(HeaderBuf[18]));
biHeight:=conv.hextodec(conv.dectohex(HeaderBuf[25])+
conv.dectohex(HeaderBuf[24])+ conv.dectohex(HeaderBuf[23])+
conv.dectohex(HeaderBuf[22]));
biPlanes:=conv.hextodec(conv.dectohex(HeaderBuf[27])+
conv.dectohex(HeaderBuf[26]));
biBitCount:=conv.hextodec(conv.dectohex(HeaderBuf[29])+
conv.dectohex(HeaderBuf[28]));
biCompression:=conv.hextodec(conv.dectohex(HeaderBuf[33])+
conv.dectohex(HeaderBuf[32])+ conv.dectohex(HeaderBuf[31])+
conv.dectohex(HeaderBuf[30]));
biSizeImage:=conv.hextodec(conv.dectohex(HeaderBuf[37])+
conv.dectohex(HeaderBuf[36])+ conv.dectohex(HeaderBuf[35])+
conv.dectohex(HeaderBuf[34]));
biXPelsPerMeter:=conv.hextodec(conv.dectohex(HeaderBuf[41])+
conv.dectohex(HeaderBuf[40])+ conv.dectohex(HeaderBuf[39])+
conv.dectohex(HeaderBuf[38]));
biYPelsPerMeter:=conv.hextodec(conv.dectohex(HeaderBuf[45])+
conv.dectohex(HeaderBuf[44])+ conv.dectohex(HeaderBuf[43])+
conv.dectohex(HeaderBuf[42]));
biClrUsed:=conv.hextodec(conv.dectohex(HeaderBuf[49])+
conv.dectohex(HeaderBuf[48])+ conv.dectohex(HeaderBuf[47])+
conv.dectohex(HeaderBuf[46]));
biClrImportant:=conv.hextodec(conv.dectohex(HeaderBuf[53])+
conv.dectohex(HeaderBuf[52])+ conv.dectohex(HeaderBuf[51])+
conv.dectohex(HeaderBuf[50]));
end;
end;

Penjelasan :
Proses pembacaan file bitmap dilakukan dengan terlebih dahulu membaca file header dan info headernya,
yang fungsinya adalah untuk mengecek apakah yang sedang dibaca adalah benar file bitmap atau bukan,
dan apakah file yang dibaca rusak atau tidak.
File Header : 14 byte
Info Header : 40 byte

Kemudian pembacaan tergantung dari nilai kedalaman warna dalam file bitmap tersebut, kita bagi
menjadi 2:
1. Pembacaan file bitmap 24bit.

Data citra dari file 24bit dimulai dari offset ke-54. Setiap bit dari offset ke-54 ini merupakan nilai
yang akan menentukan posisi pixel mana dengan warna apa. Dalam file bitmap 24bit, warna yang
akan ditampilkan di layar sudah disimpan dalam bitmap data.
2. Pembacaan file bitmap 1, 4, dan 8 bit
Data citra dari file ini juga dimulai dari offset ke-54. Pembacaan warna apa yang akan
ditampilkan dalam suatu pixel disimpan dalam Color Map. Dengan kata lain bitmap data tidak
lagi berisi data RGB, tetapi merupakan index warna.

Ilustrasi Kerja Sistem :


1. Pertama sistem akan melakukan load terhadap gambar yang dimasukkan oleh user
2. Lalu, sistem akan membaca file perbyte untuk diperoleh informasi yang terdiri dari file
header dari bit 0-14 dan info header dari bit 15-54
3. Akan dilakukan ekstrak informasi dengan rincian :
• Kedalaman warna : dari bit 28-29
• Ukuran file : dari bit 2-5
• Ukuran citra horizontal : dari bit 18-21
• Ukuran citra vertikal : dari bit 22-25