目錄c語言**
乙個問題
完整程式
bmp(全稱bitmap)是windows作業系統中的標準影象檔案格式,可以分成兩類:裝置有向量相關位圖(ddb)和裝置無向量相關位圖(dib),使用非常廣。它採用位對映儲存格式,除了影象深度可選以外,不採用其他任何壓縮,因此,bmp檔案所占用的空間很大。bmp檔案的影象深度可選lbit、4bit、8bit及24bit。bmp檔案儲存資料時,影象的掃瞄方式是按從左到右、從下到上的順序。由於bmp檔案格式是windows環境中交換與圖有關的資料的一種標準,因此在windows環境中執行的圖形影象軟體都支援bmp影象格式。
bmp檔案主要有四部分組成,點陣圖頭、位圖資訊、調色盤、位圖資料。
儲存檔案的總體資訊
這部分告訴應用程式影象的詳細資訊,在螢幕上顯示影象將會使用這些資訊
暫時不做介紹
在典型的24位位圖下,乙個畫素由24bit,即3個位元組(r\g\b)組成。
int getbmpfilesize(file * fpbmp)
int getbmpwidth(file* fpbmp)
int getbmpheight( file* fpbmp )
int getoffset(file * fpbmp)
對於乙個3*3的bmp檔案,三行分別是純色的rgb分量
等等,頭部54位元組,影象9個畫素=27位元組,加起來一共81位元組,可是檔案有90位元組啊!剩下的4個位元組呢?
不妨把注釋部分取消注釋試一下!
原來,windows裡每行不足4位元組的整數倍,會自動補0!所以三行多出了3個畫素=9位元組
#include int getbmpwidth(file* fpbmp);
int getbmpheight( file* fpbmp );
int getbmpfilesize(file * fpbmp);
int getbmppixbits(file * fpbmp);
int getoffset(file * fpbmp);
int readbmpdata( file* fpbmp );
int main()
printf("影象寬度:%d\n",getbmpwidth(fp_read));
printf("影象高度:%d\n",getbmpheight(fp_read));
printf("檔案大小:%d位元組\n",getbmpfilesize(fp_read));
printf("畫素位數:%d\n",getbmppixbits(fp_read));
printf("偏移:%d\n",getoffset(fp_read));
readbmpdata(fp_read);
return 0;
}int readbmpdata( file* fpbmp )
printf(",");
for(;(j)%4!=0;j++)
printf("\n");
}return 0;
}//獲取畫素位數
int getbmppixbits(file * fpbmp)
int getbmpfilesize(file * fpbmp)
int getbmpwidth(file* fpbmp)
int getbmpheight( file* fpbmp )
int getoffset(file * fpbmp)
bmp檔案解析
size xx large 解析bmp影象 size 今天做了乙個很好玩的東西 bmp解析器。剛看到的時候我覺得超難,完全不 懂,做出來之後,覺得其實很簡單!接下來就讓我來介紹一下吧!在真正做解析器之前我們應該先了解一些基礎知識!size x large 位運算 size size large 1....
BMP檔案結構解析
一 bmp檔案結構 bmp檔案組成 bmp檔案由檔案頭 位圖資訊頭 顏色資訊和圖形資料四部分組成。bmp檔案頭 bmp檔案頭資料結構含有bmp檔案的型別 檔案大小和點陣圖起始位置等資訊。其結構定義如下 typedef struct tagbitmapfileheader bitmapfilehead...
解析 bmp檔案的結構
bmp檔案組成 bmp檔案由檔案頭 位圖資訊頭 顏色資訊和圖形資料四部分組成 bmp檔案頭 bmp檔案頭資料結構含有bmp檔案的型別 檔案大小和點陣圖起始位置其結構定義如下 typedef struct tagbitmapfileheader bitmapfileheader 位圖資訊頭 bmp點陣...