基於C語言的BMP檔案格式轉換

2021-08-20 06:40:55 字數 2209 閱讀 6531

//將bmp檔案儲存於1.bmp中,若是bmp檔案,則在out.bmp檔案中可以看到,若不是,則在out.bmp中顯示開啟失敗。

//識別桌球

#include

#include

//此bmp檔案影象深度要求24bit

#define bm 19778  //bm對應的asc碼0x4d42轉為10進製

#define bitmapfileheaderlength 14  // the bmp fileheader length is 14

void bmpfiletest(file* fpbmp);//測試是否為bmp檔案 

void bmpheaderpartlength(file* fpbmp);//獲得從位圖頭到位圖詳細資料部分的offset

void bmpwidthheight(file* fpbmp);//獲得bmp檔案的寬度和高度資訊 

void bmpdatapart(file* fpbmp);//獲得調色盤的rgb資料

void bmpoutput(file *fpout);//輸出與txt檔案相符的bmp影象

unsigned int offset=0;//offset定義為資料的起始位址

long width;

long height;

unsigned char r[2000][2000],output_r[2000][2000];

unsigned char g[2000][2000],output_g[2000][2000];

unsigned char b[2000][2000],output_b[2000][2000];

unsigned char num=0;

int main()

if((fpout=fopen("out.bmp","wb"))==null)

bmpfiletest(fpbmp); //測試是否為bmp檔案

bmpheaderpartlength(fpbmp);//得到bmp檔案的首位址區

bmpwidthheight(fpbmp);//得到bmp檔案的高度和寬度

fseek(fpbmp,0l,seek_set);

fseek(fpout,0l,seek_set);

fp_temp=(unsigned char*)malloc(offset*sizeof(unsigned char));

fread(fp_temp,1,offset,fpbmp);

fwrite(fp_temp,1,offset,fpout);

bmpdatapart(fpbmp);//將資料儲存在檔案中

/*//對進行處理

*/bmpoutput(fpout);//轉化為bmp檔案

fclose(fpbmp);

fclose(fpout);  //關閉檔案

printf("中桌球的個數為%d個。\n",num+1);

return 0;

} void bmpfiletest(file* fpbmp)   

}void bmpheaderpartlength(file* fpbmp)

void bmpwidthheight(file* fpbmp)

void bmpdatapart(file* fpbmp)

if((fpg=fopen("bmpg.txt","w+"))==null)

if((fpb=fopen("bmpb.txt","w+"))==null)

fseek(fpbmp,offset,seek_set);

stride=(24*width+31)/8;

stride=stride/4*4;

pix=(unsigned char*)malloc(stride*sizeof(unsigned char));  //動態分配畫素大小 

for(j=0;j

}for(i=0;i

}fclose(fpr);

fclose(fpg);

fclose(fpb);

}void bmpoutput(file* fpout)

//else

//pixout[i*3+2]=output_r[height-1-j][i];

pixout[i*3+1]=output_g[height-1-j][i];

pixout[i*3]  =output_b[height-1-j][i];

}fwrite(pixout,1,stride,fpout);}}

BMP檔案格式

bmp檔案格式 bmp檔案大體上分成四個部分,如圖1所示。位 件頭bitmapfileheader 位圖資訊頭bitmapinfoheader 調色盤 palette 圖象資料 圖1.windows位 件結構示意圖 第一部分為位 件頭bitmapfileheader,是乙個結構,其定義如下 type...

BMP檔案格式

典型的位 件格式通常包含下面幾個資料塊 下面的部分將會詳細地描述位 件中儲存的資料。需要注意的是這是標準點陣圖的檔案格式,其他一些位圖影象可能根據生成檔案的應用程式不同所使用格式可能會有細微的區別。這部分是識別資訊,典型的應用程式會首先普通讀取這部分資料以確保的確是位 件並且沒有損壞。這部分告訴應用...

BMP檔案格式

位置 大小 說明 0000h 2 bm 檔案標識 0002h 4 檔案大小 0006h 4 保留 0 000ah 4 從檔案開始到位圖資料之間的偏移量 000eh 4 位圖資訊頭,用來描述點陣圖的顏色 壓縮方法等。0012h 4 點陣圖的寬度,以象素為單位 0016h 4 點陣圖的高度,以象素為單位...