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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

DDB与DIB

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

DB與DIB的區(qū)別是什么?覺得書上介紹的有點(diǎn)抽象、不容易理解。他們兩者之間的區(qū)別的“物理意義” 【“現(xiàn)實(shí)意義”】——姑且這么叫吧,呵呵!被這個(gè)問題困擾了很久,所以今天決定好好查資料總結(jié)一下,把它徹底搞清楚,也希望能對那些和我一樣有著困惑的你 起到一點(diǎn)幫助。轉(zhuǎn)入正題:

【與位圖相關(guān)的基礎(chǔ)概念:】

DDB位圖(Device-dependent Bitmap):設(shè)備相關(guān)位圖,也有書上稱為GDI位圖(Graphic Device Interface—圖形設(shè)備接口)。

DIB位圖(Device-independent Bitmap):設(shè)備無關(guān)位圖。

GDI位圖是一種GDI對象,在MFC中用CBitmap類來表示。在CBitmap類對象中,包含 一種和Windows的GDI模塊有關(guān)的Windows數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)是與設(shè)備相關(guān)的。【應(yīng)用程序可以得到GDI位圖數(shù)據(jù)的一個(gè)備份,但是其中位圖 的安排則完全依賴于顯示設(shè)備。我們可以將GDI位圖數(shù)據(jù)在同一臺計(jì)算機(jī)內(nèi)的不同程序間任意傳遞,但是由于其對設(shè)備的依賴性,在不同類型計(jì)算機(jī)間的傳遞是沒 有意義的。(由于他們是設(shè)備相關(guān)的,通過磁盤或者網(wǎng)絡(luò)來傳輸,其意義就很不明顯。)】【這段話是從書上摘下來的。】

區(qū)別:DIB由于自帶顏色表,理論上說在不同的設(shè)備上顯示時(shí)均可按原來的顏色還原顯示,或仿真顯示, 但是很明顯顏色表需要消耗一定的存儲空間,并且在每次顯示時(shí)均要對顏色進(jìn)行處理,因此速度較慢。【而DDB中不包含顏色信息,因此顯示時(shí)以系統(tǒng)的調(diào)色板為 基礎(chǔ)進(jìn)行各位的顏色映射,Windows操作系統(tǒng)只能保證系統(tǒng)調(diào)色板的前20中顏色穩(wěn)定不變,所以DDB只能保證正確顯示少于20種的顏色位圖。簡言 之,DDB由于直接對顏色位平面進(jìn)行記錄,因此顯示速度最快,但是在不同的設(shè)備上顯示時(shí)不能保證顏色的還原。 ? 】

論壇中各種類似的說法如下:
????
1、主要區(qū)別就是顏色表,一般來說,在剪貼板中存放的是DDB(比如截屏的時(shí)候獲得的),在文件中存放的是DIB?。

2、把DIB轉(zhuǎn)換成DDB??:?你可以把一個(gè)設(shè)備無關(guān)位圖(DIB)在不轉(zhuǎn)換成設(shè)備相關(guān)位圖(DDB)的情況下顯示到設(shè)備環(huán)境中,但是,這樣做顯示速度將慢很多。如果進(jìn)行轉(zhuǎn)換,將提高顯示速度。

3、圖象要顯示出來必須轉(zhuǎn)換成設(shè)備相關(guān)位圖

4、把DDB轉(zhuǎn)換成DIB:設(shè)備相關(guān)位圖(DDB)顯示方式是盡可能與顯示設(shè)備驅(qū)動(dòng)程序相匹配,這樣,DDB不可能與其他顯示設(shè)備兼容;而設(shè)備無關(guān)位圖(DIB)能與所有顯示設(shè)備兼容,但是,其缺點(diǎn)在于顯示速度比較慢。???
???
5、 我們需要把DDB轉(zhuǎn)換為DIB的一種情況是,需要將位圖保存到一個(gè)文件中。?

?

關(guān)于DIB數(shù)據(jù)結(jié)構(gòu)以及DDB和DIB兩者之間如何轉(zhuǎn)換就不需要我嘮叨啦,網(wǎng)上很容易找到資料。

?

?

?

1. 基本概念

  先來用通俗的語句講解位圖和調(diào)色板的概念。

  我們知道,自然界中的所有顏 色都可以由紅、綠、藍(lán)(R,G,B)三基色組合而成。針對含有紅、綠、藍(lán)色成分的多少,可以對其分別分成0~255個(gè)等級,而紅、綠、藍(lán)的不同組合共有 256×256×256種,因此約能表示1600萬種顏色。對于人眼而言,這已經(jīng)是"真彩色"了。

  對每個(gè)像素進(jìn)行了(R,G,B)量化的圖像就是位圖,其在計(jì)算機(jī)中對應(yīng)文件的擴(kuò)展名一般為.bmp。既然用R,G,B的量化值就可以直接記錄一張位圖的所有像素,那我們需要調(diào)色板干什么呢?

  首先,我們可以計(jì)算完全利用(R,G,B)組合來存儲一個(gè)800×600的位圖所需要的空間為:

800×600×3 = 1440000(字節(jié))= 1.37M(字節(jié))

  驚人的大!因此,調(diào)色板橫空出世了,它的功能在于緩解位圖文件存儲空間過大的問題。

  假設(shè)一個(gè)位圖為16色,其像素總數(shù)為800×600。我們只需要用4個(gè)bit就可以存儲這個(gè)位圖的每個(gè)像素在16種顏色中所處的等級,然后調(diào)色板提供了這16種等級對應(yīng)的(R,G,B)值,這樣,存儲這個(gè)16色位圖只需要:

800×600×4/8 = 240000(字節(jié))= 0.22 M(字節(jié))

  額外的存儲R,G,B表的開銷(即調(diào)色板Palette,也稱為顏色查找表LUT)僅僅為16×3=48字節(jié)。

  存儲空間被大為減少!

  常見的位圖有單色、16色、256色、16位及24位真彩色5種,對于前三者(即不大于256色)都可以調(diào)色板方式進(jìn)行存儲,而對16位及24位真彩色以調(diào)色板進(jìn)行存儲是不劃算的,它們直接按照R,G,B分量進(jìn)行存儲。

  在此基礎(chǔ)上我們來分析DDB位圖(Device-dependent bitmap,與設(shè)備相關(guān)的位圖)與DIB位圖(Device-independent bitmap,與設(shè)備無關(guān)的位圖)的概念以及二者的區(qū)別。

  DDB依賴于具體設(shè)備,它只能存在于內(nèi)存中(視頻內(nèi)存或系統(tǒng)內(nèi)存),其顏色模式必須與特定的輸出設(shè)備相一致,使用系統(tǒng)調(diào)色板。一般只能載入色彩較簡單的DDB位圖,對于顏色較豐富的位圖,需使用DIB才能長期保存。

   DIB不依賴于具體設(shè)備,可以用來永久性地保存圖象。DIB一般是以*.BMP文件的形式保存在磁盤中的,有時(shí)也會保存在*.DIB文件中。 DIB位圖的特點(diǎn)是將顏色信息儲存在位圖文件自身的顏色表中,應(yīng)用程序要根據(jù)此顏色表為DIB創(chuàng)建邏輯調(diào)色板。因此,在輸出一幅DIB位圖之前,程序應(yīng)該 將其邏輯調(diào)色板選入到相關(guān)的設(shè)備上下文并實(shí)現(xiàn)到系統(tǒng)調(diào)色板中。

轉(zhuǎn)載于:https://www.cnblogs.com/sideny/p/3272940.html

總結(jié)

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

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