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'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 就是图像的文件名,这个不用多说吧~ 啊好详细~~~~
感谢楼上~~~~
我先去写写,有问再提~~~~~~ 成功了~哇哈哈
[求助]如何在VC里读取一幅图片的数据
这个,BMP图片的数据结构我还是baidu了下,但是怎么让VC读入一图片并存在X(不知道什么数据类型是用来存BMP的)里,哪位高手能帮个忙解释下吗。
页:
[1]