图片还原问题
请教一个问题:一个文件如aa.bin里是.bmp文件的位图数据,且按565的格式存储,要把它还原为888格式的原.bmp文件.
求vc代码。
一、BMP文件结构
1. BMP文件组成
BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。
2. BMP文件头
BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。
其结构定义如下:
typedef struct tagBITMAPFILEHEADER//(Size: 14)
{
WORDbfType;//(0x00) 位图文件的类型,必须为BM
DWORDbfSize;//(0x02) 位图文件的大小,以字节为单位
WORDbfReserved1;//(0x06) 位图文件保留字,必须为0
WORDbfReserved2;//(0x08) 位图文件保留字,必须为0
DWORDbfOffBits;//(0x0A) 位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;
3. 位图信息头
BMP位图信息头数据用于说明位图的尺寸等信息。
typedef struct tagBITMAPINFOHEADER//(Size: 40)
{
DWORDbiSize;//(0x0E) 本结构所占用字节数
LONGbiWidth;//(0x12) 位图的宽度,以像素为单位
LONGbiHeight;//(0x16) 位图的高度,以像素为单位
WORDbiPlanes;//(0x1A) 目标设备的级别,必须为1
WORDbiBitCount//(0x1C) 每个像素所需的位数,必须是1(双色), 4(16色),8(256色)或24(真彩色)之一
DWORDbiCompression;//(0x1E) 位图压缩类型,必须是:0(不压缩),1(BI_RLE8压缩类型),2(BI_RLE4压缩类型)之一
DWORDbiSizeImage;//(0x22) 位图的大小,以字节为单位
LONGbiXPelsPerMeter;//(0x26) 位图水平分辨率,每米像素数
LONGbiYPelsPerMeter;//(0x2A) 位图垂直分辨率,每米像素数
DWORDbiClrUsed;//(0x2E) 位图实际使用的颜色表中的颜色数
DWORDbiClrImportant;//(0x32) 位图显示过程中重要的颜色数
} BITMAPINFOHEADER;
谢谢。