posts - 218, comments - 61, trackbacks - 0, articles - 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;
    }
};
只有注册用户登录后才能发表评论。