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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DIB

發(fā)布時間:2024/3/26 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DIB 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


DIB(Device-indepentent bitmap)設(shè)備無關(guān)位圖,


與設(shè)備無關(guān)性主要體現(xiàn)在以下兩個方面:
??? DIB的顏色模式與設(shè)備無關(guān)。例如,一個256色的DIB即可以在真彩色顯示模式下使用,也可以在16色模式下使用。
??? 256色以下(包括256色)的DIB擁有自己的顏色表,像素的顏色獨立于系統(tǒng)調(diào)色板。
??? 由于DIB不依賴于具體設(shè)備,因此可以用來永久性地保存圖象。DIB一般是以*.BMP文件的形式保存在磁盤中的,有時也會保存在*.DIB文件中。運行在不同輸出設(shè)備下的應(yīng)用程序可以通過DIB來交換圖象。
??? DIB還可以用一種RLE算法來壓縮圖像數(shù)據(jù),但一般來說DIB是不壓縮的。


DIB的結(jié)構(gòu):

?  在內(nèi)存中,一個完整的DIB由兩部分組成:一個BITMAPINFO結(jié)構(gòu)和一個存儲像素陣列的數(shù)組

BITMAPINFO描述了位圖的大小,顏色模式和調(diào)色板等各種屬性,其定義為

  typedef struct tagBITMAPINFO {

?  BITMAPINFOHEADER bmiHeader;

  RGBQUAD bmiColors[1]; //顏色表

  } BITMAPINFO;

  RGBQUAD結(jié)構(gòu)用來描述顏色,其定義為

?  typedef struct tagRGBQUAD {

  BYTE rgbBlue; //藍色的強度

?  BYTE rgbGreen; //綠色的強度

?  BYTE rgbRed; //紅色的強度

?  BYTE rgbReserved; //保留字節(jié),為0

?  } RGBQUAD;

  注意,RGBQUAD結(jié)構(gòu)中的顏色順序是BGR,而不是平常的RGB。

?  BITMAPINFOHEADER結(jié)構(gòu)包含了DIB的各種信息,其定義為

?  typedef struct tagBITMAPINFOHEADER{

?  DWORD biSize; //該結(jié)構(gòu)的大小

?  LONG biWidth; //位圖的寬度(以像素為單位)

?  LONG biHeight; //位圖的高度(以像素為單位)

?  WORD biPlanes; //必須為1

?  WORD biBitCount //每個像素的位數(shù)(1、4、8、16、24或32)

?  DWORD biCompression; //壓縮方式,一般為0或BI_RGB (未壓縮)

?  DWORD biSizeImage; //以字節(jié)為單位的圖象大小(僅用于壓縮位圖)

  LONG biXPelsPerMeter; //以目標(biāo)設(shè)備每米的像素數(shù)來說明位圖的水平分辨率

?  LONG biYPelsPerMeter; //以目標(biāo)設(shè)備每米的像素數(shù)來說明位圖的垂直分辨率

?  DWORD biClrUsed; /*顏色表的顏色數(shù),若為0則位圖使用由biBitCount指定的最大顏色數(shù)*/

?  DWORD biClrImportant; //重要顏色的數(shù)目,若該值為0則所有顏色都重要

?  } BITMAPINFOHEADER;

BITMAPINFO結(jié)構(gòu)最后是調(diào)色板數(shù)據(jù),包含若干個RGBQUAD條目,一般來說最大為256個,定義為長度為1的數(shù)組是c語言里常用的一個技巧,用來定義可變長度的結(jié)構(gòu).你在程序里需要分配夠保存調(diào)色板的大小,最好把mBitmapInfo定義為一個指針
mBitmapInfo?=?(BITMAPINFO*)malloc(sizeof(BITMAPINFO)+256*sizeof(RGBQUAD));

  與DDB不同,DIB的字節(jié)數(shù)組是從圖象的最下面一行開始的逐行向上存儲的,也即等于把圖象倒過來然后在逐行掃描。另外,字節(jié)數(shù)組中每個掃描行的字節(jié)數(shù)必需是4的倍數(shù),如果不足要用0補齊



總結(jié)

以上是生活随笔為你收集整理的DIB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。