BMP檔案的讀取

2021-09-05 20:54:30 字數 1863 閱讀 2517

執行測試效果:

**:

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...