Posted on 2008-12-18 15:47
魔のkyo 阅读(1483)
评论(0) 编辑 收藏 引用
参看 http://www.comprg.com.cn/detail.asp?hw_id=1158 《BMP位图文件的存储格式》
在MFC读取一张BMP格式的图片并放在下面的结构中。
struct BMP{
BITMAPFILEHEADER fh;
BITMAPINFOHEADER ih;
RGBTRIPLE* rgb;
long &width;
long &height;
BMP():rgb(NULL),width(ih.biWidth),height(ih.biHeight){}
BMP(const char* fn):rgb(NULL),width(ih.biWidth),height(ih.biHeight){
CFile cf;
ASSERT(cf.Open(fn,CFile::modeRead));
cf.SeekToBegin();
cf.Read(&fh,sizeof(fh));//读取文件头
cf.Read(&ih,sizeof(ih));//读取文件信息头
rgb = new RGBTRIPLE[ih.biWidth*ih.biHeight];
cf.SeekToBegin();
cf.Seek(54,CFile::begin);
cf.ReadHuge(rgb,ih.biWidth*ih.biHeight*3);
cf.Close();
}
RGBTRIPLE& color(int i,int j){
return rgb[i*width+j];
}
~BMP(){
if(rgb)delete rgb;
}
};