JAY 发表于 2006-11-28 22:00:51

这个BMP嘛~~首先是一个BMP文件头

typedef struct tagBITMAPFILEHEADER {
WORD   bfType;
DWORDbfSize;
WORD   bfReserved1;
WORD   bfReserved2;
DWORDbfOffBits;
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;

然后是一个BMP信息头~

typedef struct tagBITMAPINFOHEADER{
DWORDbiSize;
LONGbiWidth;
LONGbiHeight;
WORDbiPlanes;
WORDbiBitCount;
DWORDbiCompression;
DWORDbiSizeImage;
LONGbiXPelsPerMeter;
LONGbiYPelsPerMeter;
DWORDbiClrUsed;
DWORDbiClrImportant;
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;

如果BMP信息头里面的biBitCount <= 8的话,说明这个BMP用的是索引色,那么紧接着的就是BMP的调色板,这是个数组,大小等于2^biBitCount

RGBQUAD       bmiColors[];

如果不是索引色就没有这个调色板了。
在接下来就是BMP的图像数据了~

至于读取,有了上面的结构之后当然可以自己写函数来读了,如果懒得写可以使用WIN32API来读取

The LoadBitmap function loads the specified bitmap resource from a module&#39;s executable file. This function has been superseded by the LoadImage function.

HBITMAP LoadBitmap(
HINSTANCE hInstance,// handle to application instance
LPCTSTR lpBitmapName// name of bitmap resource
);

其中的
HBITMAP 返回值是一个位图句柄,读取成功后就可以用这个句柄来YY你的图像了
hInstance 是当前应用程序的句柄,该设什么就设什么
lpBitmapName 就是图像的文件名,这个不用多说吧~

Alanwywy 发表于 2006-11-29 09:10:26

啊好详细~~~~
感谢楼上~~~~
我先去写写,有问再提~~~~~~

Alanwywy 发表于 2006-11-29 14:22:41

成功了~哇哈哈

Alanwywy 发表于 2006-11-28 21:30:20

[求助]如何在VC里读取一幅图片的数据

这个,BMP图片的数据结构我还是baidu了下,但是怎么让VC读入一图片并存在X(不知道什么数据类型是用来存BMP的)里,哪位高手能帮个忙解释下吗。
页: [1]
查看完整版本: [求助]如何在VC里读取一幅图片的数据