維克斯討論區
如何利用C++開啟一個BMP的圖檔呢??!
如何運用C++語言開啟一個BMP的圖檔呢
小弟我在這裡有一段簡短的程式給大家參考一下
希望各位大大多多指教
BMP檔案就是在Windows中最常出現的一種無壓縮的影像圖檔
和JPEG檔案不同也是一種最簡單的圖檔
BITMAPFILEHEADER FileHeader; //BMP檔頭結構
BITMAPINFOHEADER InfoHeader; //BMP資料結構
int ImageX, ImageY;
int fix;
int i, j, k, n;
int data;
BYTE ByteBuf;
FILE *fp; //IOBUF<windows.h>
char filename[20];
scanf("%s", filename); //讀取檔案
fp = fopen(filename, "rb");
fread(&FileHeader, sizeof(BITMAPFILEHEADER), 1, fp);
fread(&InfoHeader, sizeof(BITMAPINFOHEADER), 1, fp);
if( FileHeader.bfType != 'MB' ) //判定是否為24位元bmp檔案
return;
if( InfoHeader.biCompression != 0 )
return;
if( InfoHeader.biBitCount != 24 )
return;
ImageX = InfoHeader.biWidth; //取出圖形高寬
ImageY = InfoHeader.biHeight;
data = 3*Imagex*ImageY;
cout<<"圖寬 "<<ImageX<<" 圖高 "<<ImageY<<endl;
if( (ImageX*3)%4 != 0) //計算多餘byte數目
fix = 4 - ((ImageX*3)%4);
else
fix = 0;
fseek(fp,36*sizeof(char),SEEK_SET); //移到第36個位置讀取資料到raw_data
for(i=0;i<;i++)
{
fread((char*) &raw_data,sizeof(char),1,fp);
/* 略過各列多餘的資訊 */
for( n=0; n<fix; n++ )
{
fread(&ByteBuf, sizeof(BYTE), 1, fp);
}
}
fclose(fp);
大家參考一下吧
|