1. *.bmp文件結(jié)構(gòu)
*.bmp文件和大多數(shù)圖形文件一樣,分為文件描述區(qū)(頭文件信息)和圖象存儲(chǔ)區(qū)(象素?cái)?shù)據(jù))兩部分。而頭文件信息中又包含了信息區(qū)和調(diào)色板區(qū)兩部分,信息區(qū)又可以細(xì)分為文件信息區(qū)和圖象信息區(qū)兩部分。
這里以256色320*200的bmp圖象為例。頭文件描述區(qū)的偏移長(zhǎng)度是1078個(gè)字節(jié),也就是說圖象存儲(chǔ)區(qū)是從文件偏移1078后開始讀取的。在頭文件描述區(qū)中頭信息區(qū)的偏移長(zhǎng)度是54個(gè)字節(jié),也就是說調(diào)色板數(shù)據(jù)區(qū)是從54-1078之間的1024字節(jié)。在頭信息區(qū)中文件信息區(qū)占14個(gè)字節(jié)而圖象信息區(qū)占40字節(jié)。
(1) 文件信息區(qū)
typedef struct BMP_file
{
unsigned int bfType; //文件類型
unsigned long bfSize; //bmp文件長(zhǎng)度
unsigned int Reserved1;
unsigned int Reserved2;
unsigned long bfOffset; //文件描述區(qū)長(zhǎng)度,16色為118,256色為1078
}bitmapfile;
現(xiàn)在算一下,有3個(gè)int,2個(gè)long,正好3*2+2*4=14字節(jié)
(2) 圖象信息區(qū)
type struct BMP_info
{
unsigned long biSize;
unsigned long biWidth;
unsigned long biHeight;
unsigned int biPlanes;
unsigned int biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
unsigned long biXplosPerMeter;
unsigned long biYplosPerMeter;
unsigned long biClrUsed;
unsigned long biClrImportant;
}bitmapinfo;
現(xiàn)在算一下,2個(gè)int,9個(gè)long,正好是2+2*9*4=40字節(jié)。
(3)調(diào)色板區(qū)
typedef struct RGB_BMP_typ
{
unsigned char blue;
unsigned char green;
unsigned char red;
unsigned char reserved;
}RGB_BMP,*RGB_BMP_ptr;
說明:三原色+灰度,共4*256=1024字節(jié)。
下面是bmp文件的完整的結(jié)構(gòu)定義:
typedef struct bmp_picture_typ
{
bitmapfile file;
bitmapinfo info;
RGB_BMP palette[256];
char far *buffer;
}bmp_picture, *bmp_picture_ptr;
相關(guān)推薦:2010年全國(guó)計(jì)算機(jī)等級(jí)考試考試報(bào)考指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |