BMP檔案結構解析

2021-07-09 06:52:43 字數 1622 閱讀 9006

一、bmp檔案結構

bmp檔案組成

bmp檔案由檔案頭、位圖資訊頭、顏色資訊和圖形資料四部分組成。 

bmp檔案頭

bmp檔案頭資料結構含有bmp檔案的型別、檔案大小和點陣圖起始位置等資訊。 

其結構定義如下:

typedef  struct  tagbitmapfileheader

bitmapfileheader;

3.  位圖資訊頭

bmp點陣圖資訊頭資料用於說明點陣圖的尺寸等資訊。

typedef  struct  tagbitmapinfoheader  bitmapinfoheader;

4.  顏色表

顏色表用於說明點陣圖中的顏色,它有若干個表項,每乙個表項是乙個rgbquad型別的結構,定義一種顏色。rgbquad結構的定義如下:

typedef  struct  tagrgbquad    rgbquad;

顏色表中rgbquad結構資料的個數有bibitcount來確定:

當bibitcount=1,4,8時,分別有2,16,256個表項;

當bibitcount=24時,沒有顏色表項。

位圖資訊頭和顏色表組成位圖資訊,bitmapinfo結構定義如下:

typedef  struct  tagbitmapinfo    bitmapinfo;

5.  位圖資料

位圖資料記錄了點陣圖的每乙個畫素值,記錄順序是在掃瞄行內是從左到右,掃瞄行之間是從下到上。點陣圖的乙個畫素值所佔的位元組數:

當bibitcount=1時,8個畫素佔1個位元組;

當bibitcount=4時,2個畫素佔1個位元組;

當bibitcount=8時,1個畫素佔1個位元組;

當bibitcount=24時,1個畫素佔3個位元組;

windows規定乙個掃瞄行所佔的位元組數必須是

4的倍數(即以long為單位),不足的以0填充,

乙個掃瞄行所佔的位元組數計算方法:

datasizeperline=  (biwidth*  bibitcount+31)/8; 

<  id_bitmap_bmp  )  return;

//  圖形檔名有效  (=0  bmp)

//  準備顯示真彩位圖

pbitmapfileheader=  (bitmapfileheader  *)  mpbitssrc;

bfoffbits=  pbitmapfileheader-> bfoffbits;

//  使用普通函式顯示位圖

if(  m_hdrawdib  ==  null  ||  mdispmethod  ==  0)

else 

//  結束顯示真彩位圖

::deleteobject(selectobject(hmemdc,hbitmapold)); 

<  0  )  mpos.x=  0;

if(  mpos.y 

<  0  )  mpos.y=  0;

//  顯示真彩位圖

drawdibrealize(  m_hdrawdib,  dc.getsafehdc(),  true);

if(  mfullviewtog  ==  0)

else 

}return;}

解析 bmp檔案的結構

bmp檔案組成 bmp檔案由檔案頭 位圖資訊頭 顏色資訊和圖形資料四部分組成 bmp檔案頭 bmp檔案頭資料結構含有bmp檔案的型別 檔案大小和點陣圖起始位置其結構定義如下 typedef struct tagbitmapfileheader bitmapfileheader 位圖資訊頭 bmp點陣...

bmp檔案解析

size xx large 解析bmp影象 size 今天做了乙個很好玩的東西 bmp解析器。剛看到的時候我覺得超難,完全不 懂,做出來之後,覺得其實很簡單!接下來就讓我來介紹一下吧!在真正做解析器之前我們應該先了解一些基礎知識!size x large 位運算 size size large 1....

BMP檔案解析

目錄c語言 乙個問題 完整程式 bmp 全稱bitmap 是windows作業系統中的標準影象檔案格式,可以分成兩類 裝置有向量相關位圖 ddb 和裝置無向量相關位圖 dib 使用非常廣。它採用位對映儲存格式,除了影象深度可選以外,不採用其他任何壓縮,因此,bmp檔案所占用的空間很大。bmp檔案的影...