bmp位元影像檔案格式

來源:互聯網
上載者:User

最近在做視頻資料擷取,要求將採集到的資料儲存成bmp的格式,現在把有關BMP的知識貼出來,供大家學習

BMP 是 DOS 和 Windows 相容電腦上的標準 Windows 映像格式。BMP 格式支援 RGB、索引顏色、灰階和位元影像顏色模式。可以為映像指定 Windows 或 OS/2? 格式和位元深度。對於使用 Windows 格式的 4 位和 8 位元影像像,還可以指定 RLE 壓縮。

BMP 映像通常是自下而上編寫出;但您也可以選擇“翻轉行序”選項,自上而下編寫。您還可以點按“進階模式”選擇其他編碼方法。(“翻轉行序”和“進階模式”對於遊戲程式員和其他使用 DirectX 的人員而言最有用。)

Windows bitmap,位元影像檔案。這是電腦上最常用的檔案格式,在Windows的目錄裡可以找到一大堆,大部分是Windows的案頭和壁紙圖案。基本上所有軟體都支援它,常見的BMP圖形是沒有壓縮的,所以畫面品質好,但是比較大。BMP有黑白、灰階、256色彩色和真彩色等多種,色彩數越多,檔案越大,映像越逼真。由於不壓縮的BMP圖形是逐點記錄畫面資訊的,所以它的檔案尺寸與像素和色彩數成固定關係,如一幅真彩色的352x288的無壓縮的BMP圖形,不管內容是什麼,那怕是空白的,它的檔案大小永遠304182位元組。

  BMP是BitMap的縮寫(呵呵,這個想必人人都知道,屬於廢話,可以略過)。BitMap格式檔案最早是在MS-Windows3.0以上版本的視窗作業系統環境下使用的與裝置無關(DIB)的點陣位元影像檔案格式,也就是說Windows可以在任何裝置上顯示BitMap檔案。隨著Windows影響的擴大及其版本的日臻完善,使Windows已經成為PC作業系統的工業標準。現在各種版本的Windows環境中啟動並執行圖形、圖象檔案處理工具都支援BitMap格式檔案。它的主要特點有:檔案結構與PCX檔案類似,每個檔案只能存放一幅圖象;圖象資料是否採用壓縮方式可由使用者根據需要進行選擇。
每個BMP檔案中都包含三個部分:
   1.點陣位元影像檔案頭(BitMapFileHeader):它裡麵包含有裝置無關的點陣位元影像檔案的類
    型、尺寸、顯示內容等資訊。

BMP檔案頭BitMapFileHeader可以用如下結構來描述:

Typedef struct

{

int bfType;

long bfSize;

int bfReserved1;

int bfReserved2;

long bfOffbits;

}BitMapFileHeader;

此結構中各欄位含義如下:

·bfType 規定的位元影像檔案類型,必須是“BM”作為識別的BMP檔案的標

志。

·bfSize 位元影像檔案的大小,以位元組為單位。

·bfRserved1 位元影像檔案保留字,必須置為0。

·bfRserved2 位元影像檔案保留字,必須置為0。

·bfOffbits 給出位元影像陣列,即實際點位元影像相對於BitMapFileHeader的位移

量,以位元組為單位。
2.(1)點陣位元影像資訊頭(BitMapInfoHeader)資料結構:它含有關於Windows3.0及其更高版本與裝置無關點陣位元影像的尺寸和格式資訊,包括圖象的寬度、高度及壓縮方法等。

其結構如下:

typedef struct

{

long biSize;

long biWidth;

long biHeight;

int biPlanes;

int biBitCount;

long biComprission;

long biSizeImage;

long biXPelsPerMeter;

long biYPelsPerMeter;

long biClrUsed;

long biClrImportant;

}BitMapInfoHeader;

結構中各欄位含義如下:

·biSize BitMapInfoHeader結構所需要的位元組數。

·biWidth 位元影像的寬度(以象素為單位)。

·biHeight 位元影像的高度(以象素為單位)。

·biPlanes 輸出裝置的位平面數且必須置1。

·biBitCount 每個象素所需的位元;必須是1(單色)、4(16色)8(256

色)或24(真彩色)之一。

·biCompression 點陣位元影像規定的壓縮類型;必須是0(不壓縮)、1(BI_RLE8

壓縮類型)或2(BI_RLE4壓縮類型)之一。

·biSizeImage 位元影像資料位元組數。

·biXPeIsPerMeter 位元影像的目標裝置水平解析度,以每米象素數為單位。

·biYPeIsPerMeter 位元影像的目標裝置垂直解析度,以每米象素數為單位。

·biClrUsed 調色盤中圖象實際使用的顏色數。

·biClrImportant 位元影像顯示過程中被認為重要的色彩索引值。

(2)顏色表(RGBQUAD):用於說明位元影像中的顏色。它有若干個表項,每一表項是一個RGBQUAD類型的結構,定義一種顏色。

其結構如下:

typedef struct

{

unsigned char rgbBlue;

unsigned char rgbGreen;

unsigned char rgbRed;

unsigned char rgbReserved;

}RGBQUAD;

在由RGBQUAD定義的顏色中,藍色的亮度由rgbBlue來定,綠色的亮度由rgbGreen來定,紅色的亮度由rgbRed來定。RgbReserved為保留字,必須置0。

當biBitCount=1、4、8時,顏色表中分別有2、16、256個表項。

當biBitCount=24時,顏色表中表項為空白。位元影像陣列的每3個位元組代表一個象素,3個位元組直接定義了象素顏色中的藍、綠、紅的相對亮度,因此省去了顏色表中的顏色表項。

3.位元影像陣列。

      按從左下到右上的方向儲存象素的灰階值。它有壓縮和非壓縮兩種儲存格式。

   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.