BMP位图之8位位图(三)
起始結(jié)構(gòu)
typedef struct tagBITMAPFILEHEADER {
WORD bfType; //類型名,字符串“BM”,
DWORD bfSize; //文件大小
WORD bfReserved1; //保留字
WORD bfReserved2; //保留字
DWORD bfOffBits; //實際位圖數(shù)據(jù)的偏移字節(jié)數(shù),即前三個部分長度之和
} BITMAPFILEHEADER;
對應數(shù)據(jù)
WORD bfType : 0x4d42
DWORD bfSize:0xb6836
WORD bfReserved1:0x0
WORD bfReserved2:0x0
DWORD bfOffBits:0x436
緊跟著是
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //指定此結(jié)構(gòu)體的長度,0x28
LONG biWidth; //位圖寬
LONG biHeight; //位圖高.為正,表示從下往上存儲,左下角是起點。為負,表示從上往下儲存,左上角是起點
WORD biPlanes; //平面數(shù),為1
WORD biBitCount //采用顏色位數(shù),可以是1,2,4,8,16,24,32
DWORD biCompression; //壓縮方式,可以是0,1,2,其中0表示不壓縮
DWORD biSizeImage; //實際位圖數(shù)據(jù)占用的字節(jié)數(shù)
LONG biXPelsPerMeter; //X方向分辨率
LONG biYPelsPerMeter; //Y方向分辨率
DWORD biClrUsed; //使用的顏色數(shù),如果為0,則表示默認值(2^顏色位數(shù))
DWORD biClrImportant; //重要顏色數(shù),如果為0,則表示所有顏色都是重要的
} BITMAPINFOHEADER;
對應數(shù)據(jù)
DWORD biSize:0x28
LONG biWidth:0x480
LONG biHeight:0x288
WORD biPlanes:0x1
WORD biBitCount:0x8
DWORD biCompression:0x0
DWORD biSizeImage:0xb6400
LONG biXPelsPerMeter:0x0
LONG biYPelsPerMeter:0x0
DWORD biClrUsed:0x0
DWORD biClrImportant:0x0
1位位圖有調(diào)色板2^8=256個,總共256*4=0x400個字節(jié),加上0x36,正好是偏移地址0x436
對應是以下結(jié)構(gòu)的數(shù)組
typedef struct tagRGBQUAD {
BYTE rgbBlue; //藍色
BYTE rgbGreen; //綠色
BYTE rgbRed; //紅色
BYTE rgbReserved; //保留值,常用于Alpha透明值
} RGBQUAD;
調(diào)色板太多省略
其余是數(shù)據(jù)區(qū)域,關(guān)于8位位圖,有兩種。本隨筆中展示的是BI_RGB(未壓縮),另一種是BI_RLE8(數(shù)據(jù)區(qū)數(shù)據(jù)壓縮),壓縮方式請參考下面微軟的官方鏈接.
原理地址:https://docs.microsoft.com/zh-cn/windows/desktop/gdi/bitmap-compression
轉(zhuǎn)載于:https://www.cnblogs.com/dalgleish/p/9575638.html
總結(jié)
以上是生活随笔為你收集整理的BMP位图之8位位图(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [react] 说说你是怎么理解reac
- 下一篇: 人脸识别库-于仕琪老师库地址