24位BMP檔案儲存介紹
24位bmp儲存是按BGR BGR。。。 存的
bmp點陣圖在儲存時,圖片資料部分的位元組數一定是4的倍數,如果不夠四的倍數,在每一行要補齊位元組。
但是我們在對影象進行處理時,要注意跳過這些無效的填充資料。
調色盤問題
調色盤用於說明點陣圖中的顏色,它有若干個表項,每個表項是一個RGBQUAD型別的結構,定義一種顏色。RGBQUAD結構的定義
typedef struct tagRGBQUAD
{
BYTE rgbBlure;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;//保留,必須為0
}
二、
調色盤中RGBQUAD結構資料的個數有bitBitCount來確定;
當biBitCount=1,4,8時,分別有2,16,256個表項。
當biBitCount=24時,該BMP影象就是24Bit真彩圖,沒有調色盤。
三、
點陣圖資料內容
點陣圖資料記錄了點陣圖的每一個畫素值,記錄順序是在掃描行內從左到右,掃描行之間是從下到上。點陣圖的一個畫素值
所佔的位元組數由biBitCount來確定:
當biBitCount=1時,8個畫素佔1個位元組;
當biBitCount=4時,2個畫素佔1個位元組;
當biBitCount=8時,1個畫素佔1個位元組;
當biTbiCount=24時,1個畫素佔3個位元組。
24位真彩圖每一行佔的實際位元組數()
Windows規定一個掃描行所佔的位元組數必須是4的倍數(即以long為單位)不足的以0填充
一個掃描行所佔的位元組數的計算方法
DataSizePerLine=(biwidth*biBitCount/8+3)/4*4
圖片資料的大小(不壓縮情況下)
DataSize=DataSizePerLine*biHeight;
//公式解釋
注意:C語言的除法裡,兩個int相除,結果會被CUT掉——只取商而不取餘數。
biwidth*biBitCount/8 好理解,就是一個掃描行的位元組數,
記 b = biwidth*biBitCount/8, 那麼, 原式 =(b+3)/4*4,
情況一,b是四的倍數,(b+3)/4*4 == (b/4*4 + 3/4*4) == b + 0 == b
情況二,b不是四的倍數
另 b = 4x+n,其中4x就是x的4倍數,n就是那個餘數。
容易得知:1 <= n <= 3, 4 <= n+3 <= 6,
於是,原式 == (4x+n + 3)/4*4, (其中x是任意值),
== (4x/4*4 + (n+3)/4*4)
在C語言中 == 4x + 4 == (x+1)*4
相關文章
- 【iOS資料儲存】iOS檔案系統介紹iOS
- 簡單介紹nacos單機本地配置檔案儲存位置方式
- 儲存管理(一):openfiler介紹及儲存理解
- 塊儲存 檔案儲存 物件儲存物件
- 雲端儲存產品介紹
- MySQL 5.5儲存引擎介紹MySql儲存引擎
- 檔案儲存
- 資料儲存--檔案儲存
- 14.1 InnoDB 儲存引擎介紹儲存引擎
- MySQL儲存引擎入門介紹MySql儲存引擎
- Mysql常見儲存引擎介紹MySql儲存引擎
- 【儲存】megacli 常用引數介紹
- CSV檔案儲存
- BMP檔案結構
- BMP檔案詳解
- SAP Sybase IQ按列儲存介紹 - 1 按列儲存
- Flutter持久化儲存之檔案儲存Flutter持久化
- podspec檔案介紹
- Android 檔案儲存Android
- hive檔案儲存格式Hive
- 儲存檔案到本地
- InnoDB儲存引擎檔案儲存引擎
- 06、hdfs檔案儲存
- android: 檔案儲存Android
- 儲存json檔案JSON
- BMP檔案結構 (轉)
- 物件儲存 vs 檔案儲存 vs 塊儲存,選哪個?物件
- RAC歸檔配置方案:使用NFS共享儲存儲存歸檔檔案NFS
- LSM Tree儲存組織結構介紹
- MongoDB後設資料的儲存介紹MongoDB
- 將bmp檔案壓縮為jpg檔案
- CPL檔案利用介紹
- IOS資料儲存之檔案沙盒儲存iOS
- 資料儲存-領存高速海量資料記錄儲存模組產品介紹
- 分散式檔案儲存hdfs簡介及常用命令分散式
- 企業檔案安全儲存
- IPFS的檔案儲存模式模式
- 修改並儲存hosts檔案