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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BMP 和 DIB

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

原文轉(zhuǎn)載鏈接 ? ?http://blog.sina.com.cn/s/blog_6c5a47d30102uxp6.html


現(xiàn)在我們常見到的.bmp圖像,成為位圖(Bitmap)。位圖在內(nèi)存中有兩種類型,即:設(shè)備相關(guān)位圖(DDB:Device-independent bitmaps)和設(shè)備無關(guān)位圖(DIB:Device-independent bitmaps)?!究梢赃@樣理解,這種圖像在硬盤上被稱為BMP圖,在內(nèi)存中則被叫做DDB或DIB。】

DDB位圖在早期的Windows系統(tǒng)(Windows 3.0以前)中是很普遍的,事實(shí)上它也是唯一的。然而,隨著顯示器制造技術(shù)的進(jìn)步,以及顯示設(shè)備的多樣化,DDB位圖的一些固有的問題開始浮現(xiàn)出來了。比如,它不能夠存儲(chǔ)(或者說獲取)創(chuàng)建這張圖片的原始設(shè)備的分辨率,這樣,應(yīng)用程序就不能快速的判斷客戶機(jī)的顯示設(shè)備是否適合顯示這張圖片。為了解決這一難題,微軟創(chuàng)建了DIB位圖格式。

換言之,我們現(xiàn)在電腦里面的.bmp圖基本上可以都認(rèn)為是DIB。A bitmap image file loaded into memory becomes a DIB data structure

?

BMP 由以下幾部分組成:【可以先看本頁最后的圖】

請(qǐng)注意:1,2,3,4組成了BMP,2,3,4組成了DIB

1.BMP文件頭:

BMP文件頭數(shù)據(jù)結(jié)構(gòu)含有BMP文件的類型、文件大小和位圖起始位置等信息。

其結(jié)構(gòu)定義如下:

2. DIB頭

BMP位圖信息頭數(shù)據(jù)用于說明位圖的尺寸等信息。下面兩個(gè)圖,左邊是C++里的定義及意義,后面的是實(shí)際的存儲(chǔ)。

??

3. 調(diào)色板

用于說明位圖中的顏色,它有若干個(gè)表項(xiàng),每一個(gè)表項(xiàng)是一個(gè)RGBQUAD類型的結(jié)構(gòu),定義一種顏色。RGBQUAD結(jié)構(gòu)的定義如下:

?

顏色表中RGBQUAD結(jié)構(gòu)數(shù)據(jù)的個(gè)數(shù)有biBitCount來確定:

當(dāng)biBitCount=1,4,8時(shí),分別有2,16,256個(gè)表項(xiàng);

當(dāng)biBitCount=24時(shí),沒有顏色表項(xiàng)。

?

位圖信息頭和顏色表組成位圖信息,BITMAPINFO結(jié)構(gòu)定義如下:

?

4. 位圖數(shù)據(jù),即像素值

位圖數(shù)據(jù)記錄了位圖的每一個(gè)像素值,記錄順序是在掃描行內(nèi)是從左到右,掃描行之間是從下到上。位圖的一個(gè)像素值所占的字節(jié)數(shù):

當(dāng)biBitCount=1時(shí),8個(gè)像素占1個(gè)字節(jié);

當(dāng)biBitCount=4時(shí),2個(gè)像素占1個(gè)字節(jié);

當(dāng)biBitCount=8時(shí),1個(gè)像素占1個(gè)字節(jié);

當(dāng)biBitCount=24時(shí),1個(gè)像素占3個(gè)字節(jié),按順序分別為B,G,R;

當(dāng)biBitCount=32時(shí),1個(gè)像素占4個(gè)字節(jié),按順序分別為B,G,R,α;α表示透明度,黑為全透明,白為不透明,灰色為半透明

Windows規(guī)定一個(gè)掃描行所占的字節(jié)數(shù)必須是4的倍數(shù)(即以long為單位),不足的以0填充,

biSizeImage = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) / 8) * bi.biHeight;

?

只要把這四塊信息寫好,圖像就是沒問題的,還有一些可缺省的項(xiàng),詳見參考1.

?

參考:

1.?http://en.wikipedia.org/wiki/Device-independent_bitmap

2.?http://baike.baidu.com/subview/7671/8245150.htm

?

總結(jié)

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

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