日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BMP位图之8位位图(三)

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BMP位图之8位位图(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

起始結構

typedef struct tagBITMAPFILEHEADER {

WORD bfType; //類型名,字符串“BM”,

DWORD bfSize; //文件大小

WORD bfReserved1; //保留字

WORD bfReserved2; //保留字

DWORD bfOffBits; //實際位圖數據的偏移字節數,即前三個部分長度之和

} BITMAPFILEHEADER;

對應數據

WORD bfType : 0x4d42

DWORD bfSize:0xb6836

WORD bfReserved1:0x0

WORD bfReserved2:0x0

DWORD bfOffBits:0x436

緊跟著是

typedef struct tagBITMAPINFOHEADER{

DWORD biSize; //指定此結構體的長度,0x28

LONG biWidth; //位圖寬

LONG biHeight; //位圖高.為正,表示從下往上存儲,左下角是起點。為負,表示從上往下儲存,左上角是起點

WORD biPlanes; //平面數,為1

WORD biBitCount //采用顏色位數,可以是1,2,4,8,16,24,32

DWORD biCompression; //壓縮方式,可以是0,1,2,其中0表示不壓縮

DWORD biSizeImage; //實際位圖數據占用的字節數

LONG biXPelsPerMeter; //X方向分辨率

LONG biYPelsPerMeter; //Y方向分辨率

DWORD biClrUsed; //使用的顏色數,如果為0,則表示默認值(2^顏色位數)

DWORD biClrImportant; //重要顏色數,如果為0,則表示所有顏色都是重要的

} BITMAPINFOHEADER;

對應數據

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位位圖有調色板2^8=256個,總共256*4=0x400個字節,加上0x36,正好是偏移地址0x436

對應是以下結構的數組

typedef struct tagRGBQUAD {

BYTE rgbBlue; //藍色

BYTE rgbGreen; //綠色

BYTE rgbRed; //紅色

BYTE rgbReserved; //保留值,常用于Alpha透明值

} RGBQUAD;

調色板太多省略

其余是數據區域,關于8位位圖,有兩種。本隨筆中展示的是BI_RGB(未壓縮),另一種是BI_RLE8(數據區數據壓縮),壓縮方式請參考下面微軟的官方鏈接.

原理地址:https://docs.microsoft.com/zh-cn/windows/desktop/gdi/bitmap-compression

轉載于:https://www.cnblogs.com/dalgleish/p/9575638.html

總結

以上是生活随笔為你收集整理的BMP位图之8位位图(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。