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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BMP 和 DIB

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

原文轉載鏈接 ? ?http://blog.sina.com.cn/s/blog_6c5a47d30102uxp6.html


現在我們常見到的.bmp圖像,成為位圖(Bitmap)。位圖在內存中有兩種類型,即:設備相關位圖(DDB:Device-independent bitmaps)和設備無關位圖(DIB:Device-independent bitmaps)。【可以這樣理解,這種圖像在硬盤上被稱為BMP圖,在內存中則被叫做DDB或DIB。】

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

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

?

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

請注意:1,2,3,4組成了BMP,2,3,4組成了DIB

1.BMP文件頭:

BMP文件頭數據結構含有BMP文件的類型、文件大小和位圖起始位置等信息。

其結構定義如下:

2. DIB頭

BMP位圖信息頭數據用于說明位圖的尺寸等信息。下面兩個圖,左邊是C++里的定義及意義,后面的是實際的存儲。

??

3. 調色板

用于說明位圖中的顏色,它有若干個表項,每一個表項是一個RGBQUAD類型的結構,定義一種顏色。RGBQUAD結構的定義如下:

?

顏色表中RGBQUAD結構數據的個數有biBitCount來確定:

當biBitCount=1,4,8時,分別有2,16,256個表項;

當biBitCount=24時,沒有顏色表項。

?

位圖信息頭和顏色表組成位圖信息,BITMAPINFO結構定義如下:

?

4. 位圖數據,即像素值

位圖數據記錄了位圖的每一個像素值,記錄順序是在掃描行內是從左到右,掃描行之間是從下到上。位圖的一個像素值所占的字節數:

當biBitCount=1時,8個像素占1個字節;

當biBitCount=4時,2個像素占1個字節;

當biBitCount=8時,1個像素占1個字節;

當biBitCount=24時,1個像素占3個字節,按順序分別為B,G,R;

當biBitCount=32時,1個像素占4個字節,按順序分別為B,G,R,α;α表示透明度,黑為全透明,白為不透明,灰色為半透明

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

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

?

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

?

參考:

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

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

?

總結

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

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