vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)

vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)

ID:11499117

大?。?8.00 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2018-07-12

vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)_第1頁(yè)
vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)_第2頁(yè)
vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)_第3頁(yè)
vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)_第4頁(yè)
資源描述:

《vc中保存bmp位圖文件的方法及bmp文件格式帶源碼實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、#include"stdio.h"#include"Windows.h"http://幾個(gè)全局變量,存放讀入圖像的位圖數(shù)據(jù)、寬、高、顏色表及每像素所占位數(shù)(比特)//此處定義全局變量主要為了后面的圖像數(shù)據(jù)訪問及圖像存儲(chǔ)作準(zhǔn)備unsignedchar*pBmpBuf;//讀入圖像數(shù)據(jù)的指針intbmpWidth;//圖像的寬intbmpHeight;//圖像的高RGBQUAD*pColorTable;//顏色表指針intbiBitCount;//圖像類型boolreadBmp(char*bmpName){?//二進(jìn)制讀方式打開指定的圖像文件???FI

2、LE*fp=fopen(bmpName,"rb");?if(fp==0)return0;???//跳過位圖文件頭結(jié)構(gòu)BITMAPFILEHEADER?fseek(fp,sizeof(BITMAPFILEHEADER),0);???//定義位圖信息頭結(jié)構(gòu)變量,讀取位圖信息頭進(jìn)內(nèi)存,存放在變量head中?BITMAPINFOHEADERhead;?fread(&head,sizeof(BITMAPINFOHEADER),1,fp);??//獲取圖像寬、高、每像素所占位數(shù)等信息?bmpWidth=head.biWidth;?bmpHeight=

3、head.biHeight;?biBitCount=head.biBitCount;??//定義變量,計(jì)算圖像每行像素所占的字節(jié)數(shù)(必須是4的倍數(shù))?intlineByte=(bmpWidth*biBitCount/8+3)/4*4;??//灰度圖像有顏色表,且顏色表表項(xiàng)為256?if(biBitCount==8){?//申請(qǐng)顏色表所需要的空間,讀顏色表進(jìn)內(nèi)存?pColorTable=newRGBQUAD[256];?fread(pColorTable,sizeof(RGBQUAD),256,fp);?}??//申請(qǐng)位圖數(shù)據(jù)所需要的空間,

4、讀位圖數(shù)據(jù)進(jìn)內(nèi)存?pBmpBuf=newunsignedchar[lineByte*bmpHeight];?fread(pBmpBuf,1,lineByte*bmpHeight,fp);??//關(guān)閉文件?fclose(fp);??return1;}boolsaveBmp(char*bmpName,unsignedchar*imgBuf,intwidth,intheight,???intbiBitCount,RGBQUAD*pColorTable){?//如果位圖數(shù)據(jù)指針為0,則沒有數(shù)據(jù)傳入,函數(shù)返回?if(!imgBuf)?return0

5、;??//顏色表大小,以字節(jié)為單位,灰度圖像顏色表為1024字節(jié),彩色圖像顏色表大小為0?intcolorTablesize=0;?if(biBitCount==8)?colorTablesize=1024;?//待存儲(chǔ)圖像數(shù)據(jù)每行字節(jié)數(shù)為4的倍數(shù)?intlineByte=(width*biBitCount/8+3)/4*4;??//以二進(jìn)制寫的方式打開文件?FILE*fp=fopen(bmpName,"wb");?if(fp==0)return0;??//申請(qǐng)位圖文件頭結(jié)構(gòu)變量,填寫文件頭信息?BITMAPFILEHEADERfileH

6、ead;?fileHead.bfType=0x4D42;//bmp類型??//bfSize是圖像文件4個(gè)組成部分之和?fileHead.bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)?+colorTablesize+lineByte*height;?fileHead.bfReserved1=0;?fileHead.bfReserved2=0;??//bfOffBits是圖像文件前三個(gè)部分所需空間之和?fileHead.bfOffBits=54+colorTablesize;

7、??//寫文件頭進(jìn)文件?fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp);??//申請(qǐng)位圖信息頭結(jié)構(gòu)變量,填寫信息頭信息?BITMAPINFOHEADERhead;?head.biBitCount=biBitCount;?head.biClrImportant=0;?head.biClrUsed=0;?head.biCompression=0;?head.biHeight=height;?head.biPlanes=1;?head.biSize=40;?head.biSizeImage=lin

8、eByte*height;?head.biWidth=width;?head.biXPelsPerMeter=0;?head.biYPelsPerMeter=0;?//寫位圖信息頭進(jìn)內(nèi)存?fw

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。