利用fstream读取BMP图像文件(DIB设备无关位图)

本文介绍了BMP文件结构,包括位图文件头BITMAPFILEHEADER、颜色表RGBQUAD和位图数据,并详细阐述了DIB设备无关位图的特性,如图像扫描方式、行字节数规则。同时,讲解了如何利用C++的fstream库读取和解析BMP图像文件,包括打开文件和解析文件头等步骤。
摘要由CSDN通过智能技术生成

一、BMP文件结构

1、位图文件头BITMAPFILEHEADER(14字节)

typedef struct tagBITMAPFILEHEADER
 {  
     WORD    bfType;//位图文件类型,必须为0x4D42,即字符串‘BM’
     DWORD   bfSize;//位图文件大小,单位byte
     WORD    bfReserved1;  //保留字节
     WORD    bfReserved2;  //保留字节
     DWORD   bfOffBits;//文件头到实际位图数据偏移字节数,即 BITMAPFILEHEADER+BITMAPINFOHEADER+RGBQUAD
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;  

2、位图信息头 BITMAPINFOHEADER(40字节)
typedef struct tagBITMAPINFOHEADER{  
        DWORD      biSize;//本结构长度,40字节 
        LONG       biWidth;//位图实际宽度/pixel  
        LONG       biHeight;//位图实际高度/pixel  
        WORD       biPlanes;//必须为1  
        WORD       biBitCount;//每像素所占位数,1(黑白),4(16色),8(256色),24(真彩色)
        DWORD      biCompression;//位图压缩类型
        DWORD      biSizeImage;//位图大小
        LONG       biXPelsPerMeter;  //水平分辨率,pixel/m
        LONG       biYPelsPerMeter;  //垂直辨率,pixel/m
        DWORD      biClrUsed;  //实际用到颜色数,若为0则用到2^biBitCount
        DWORD      biClrImportant;  //重要颜色数,若为0则所有颜色都重要
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值