執行測試效果:
**:
void
cmyview::onreadbmp()
if(strfilepath
==""
)file *fp
=fopen(strfilepath,"r
");bitmapfileheader fileheader;
bitmapinfo info;
fread(
&fileheader,
sizeof
(fileheader),
1,fp);
if(fileheader.bftype
!=0x4d42
)uchar
*buffer
=null;
//讀位圖頭部
fread(
&info.bmiheader,
sizeof
(bitmapinfoheader),
1, fp);
//位圖寬度
long
width
=info.bmiheader.biwidth;
this
->
width
=width;
//位圖高度
long
height
=info.bmiheader.biheight;
this
->
height
=height;
dword size;
if(info.bmiheader.bisizeimage !=0
)else
buffer
=new
uchar[size];
//分配緩衝區
if(buffer
==null)
//忽略頭部位元組
fseek(fp,fileheader.bfoffbits,0);
fread(buffer,size,
1,fp);
inti,j;
#pragma
region 16 color
//16色圖的解析
if(info.bmiheader.bibitcount==4
)}}else}}
}#pragma
endregion 16 color
#pragma
region 256 color
//256色圖的解析
if(info.bmiheader.bibitcount==8
)else
rgbquad quad[
256];
fseek(fp,fileheader.bfoffbits
-sizeof
(rgbquad)
*256,0
);fread(quad,
sizeof
(rgbquad)
*256,1
,fp);
if(height
>0)
}}else}}
}#pragma
endregion 256 color
#pragma
region 24 bit
//24位**析
if(info.bmiheader.bibitcount
==24)}
}else}}
}#pragma
endregion 24 bit
this
->
releasedc(pdc);
//釋放掉繪製上下文
delete buffer;
//釋放緩衝區
fclose(fp);
//關閉bmp檔案}
關於BMP檔案的讀取
要使用jpeg如上 想必大家對bmp檔案的操作並不陌生,只是最近存在的乙個問題讓我百思不得其解,顯示的顏色不對,而且出現了明顯的傾斜現象,將該jpeg轉為bmp,然後對其進行操作。在vc環境下使用的顯示方式是呼叫dc的setpixel方法。如今已經得出了原因,是bisizeimage與的大小不一致產...
BMP檔案讀取的程式
最近做乙個影象處理的作業,寫了個bmp檔案讀取的程式。在網上找了些資料,還是當作學習筆記記下來,以後也好看看。讀取的檔案是cameraman.bmp黑白影象,256 256 256色的。include include using namespace std typedef unsigned char...
讀取bmp檔案頭出錯
typedef struct tagbitmapfileheader bitmapfileheader bitmapfileheader bf bitmapinfoheader bi word bftype fread bftype,1,2,f1 coutcout 開始 如上,讀取的bf.bfsiz...