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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

调色板 palette 详解

發布時間:2023/12/10 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调色板 palette 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

調色板只有圖片的顏色小于等于256色的時候才有,16位高彩和24位32位真彩是沒有調色板的.
調色板的存在的意義只是在當初486以前為了節省空間的一種采用索引的壓縮算法,現在沒有人這種東西。

調色板是為了節約空簡所用的,相當于一個索引。只有16位以下的才用調色板,真彩色不用調色板。

讓我們來看看下面的例子。
有一個長寬各為200個象素,顏色數為16色的彩色圖,每一個象素都用R、G、B三個分量表示。因為每個分量有256個級別,要用8位(bit),即一個字節(byte)來表示,所以每個象素需要用3個字節。整個圖象要用200×200×3,約120k字節,可不是一個小數目呀!如果我們用下面的方法,就能省的多。
因為是一個16色圖,也就是說這幅圖中最多只有16種顏色,我們可以用一個表:表中的每一行記錄一種顏色的R、G、B值。這樣當我們表示一個象素的顏色時,只需要指出該顏色是在第幾行,即該顏色在表中的索引值。舉個例子,如果表的第0行為255,0,0(紅色),那么當某個象素為紅色時,只需要標明0即可。
讓我們再來計算一下:16種狀態可以用4位(bit)表示,所以一個象素要用半個字節。整個圖象要用200×200×0.5,約20k字節,再加上表占用的字節為3×16=48字節.整個占用的字節數約為前面的1/6,省很多吧?
這張R、G、B的表,就是我們常說的調色板(Palette),另一種叫法是顏色查找表LUT(Look Up Table),似乎更確切一些。Windows位圖中便用到了調色板技術。其實不光是Windows位圖,許多圖象文件格式如pcx、tif、gif等都用到了。所以很好地掌握調色板的概念是十分有用的。
有一種圖,它的顏色數高達256×256×256種,也就是說包含我們上述提到的R、G、B顏色表示方法中所有的顏色,這種圖叫做真彩色圖(true color)。真彩色圖并不是說一幅圖包含了所有的顏色,而是說它具有顯示所有顏色的能力,即最多可以包含所有的顏色。表示真彩色圖時,每個象素直接用R、G、B三個分量字節表示,而不采用調色板技術。原因很明顯:如果用調色板,表示一個象素也要用24位,這是因為每種顏色的索引要用24位(因為總共有224種顏色,即調色板有224行),和直接用R,G,B三個分量表示用的字節數一樣,不但沒有任何便宜,還要加上一個256×256×256×3個字節的大調色板。所以真彩色圖直接用R、G、B三個分量表示,它又叫做24位色圖。

調色板一般是為了顯示256色圖象時使用的。圖象(BMP圖象)按顏色種類分類可以分為:

1、黑白圖象。不使用調色板;

2、256色圖象(包括256級灰度圖象),使用調色板。調色板中記錄的是圖象中使用的256種顏色,圖象數據中記錄的是顏色索引,通過這個索引值就可以找到對應的顏色。

3、24bit真彩色圖象,不使用調色板。圖象數據中保留RGB三種顏色組合,可以直接顯示。

調色板的原理

PC機上顯示的圖象是由一個個像素組成的,每個像素都有自己的顏色屬性。在PC的顯示系統中,像素的顏色是基于RGB模型的,每一個像素的顏色由紅(B)、綠(G)、藍(B)三原色組合而成。每種原色用8位表示,這樣一個的顏色就是24位的。以此推算,PC的SVGA適配器可以同時顯示224約一千六百多萬種顏色。24位的顏色通常被稱作真彩色,用真彩色顯示的圖象可達到十分逼真的效果。

但是,真彩色的顯示需要大量的視頻內存,一幅640×480的真彩色圖象需要約1MB的視頻內存。由于數據量大增,顯示真彩色會使系統的整體性能迅速下降。為了解決這個問題,計算機使用調色板來限制顏色的數目。調色板實際上是一個有256個表項的RGB顏色表,顏色表的每項是一個24位的RGB顏色值。使用調色板時,在視頻內存中存儲的不是的24位顏色值,而是調色板的4位或8位的索引。這樣一來,顯示器可同時顯示的顏色被限制在256色以內,對系統資源的耗費大大降低了。

顯示器可以被設置成16、256、64K、真彩色等顯示模式,前兩種模式需要調色板。在16或256色模式下,程序必須將想要顯示的顏色正確地設置到調色板中,這樣才能顯示出預期的顏色。圖11.1顯示了調色板的工作原理。使用調色板的一個好處是不必改變視頻內存中的值,只需改變調色板的顏色項就可快速地改變一幅圖象的顏色或灰度。

在DOS中,調色板的使用不會有什么問題。由于DOS是一個單任務操作系統,一次只能運行一個程序,因此程序可以獨占調色板。在Windows環境下,情況就不那么簡單了。Windows是一個多任務操作系統,可以同時運行多個程序。如果有幾個程序都要設置調色板,就有可能產生沖突。為了避免這種沖突,Windows使用邏輯調色板來作為使用顏色的應用程序和系統調色板(物理調色板)之間的緩沖。

在Windows中,應用程序是通過一個或多個邏輯調色板來使用系統調色板(物理調色板)。在256色系統調色板中,Windows保留了20種顏色作為靜態顏色,這些顏色用作顯示Windows界面,應用程序一般不能改變。缺省的系統調色板只包含這20種靜態顏色,調色板的其它項為空。應用程序要想使用新的顏色,必須將包含有所需顏色的邏輯調色板實現到系統調色板中。在實現過程中,Windows首先將邏輯調色板中的項與系統調色板中的項作完全匹配,對于邏輯調色板中不能完全匹配的項,Windows將其加入到系統調色板的空白項中,系統調色板總共有236個空白項可供使用,若系統調色板已滿,則Windows將邏輯調色板的剩余項匹配到系統調色板中盡可能接近的顏色上。

每個設備上下文都擁有一個邏輯調色板,缺省的邏輯調色板只有20種保留顏色,如果要使用新的顏色,則應該創建一個新的邏輯調色板并將其選入到設備上下文中。但光這樣還不能使用新顏色,程序只有把設備上下文中的邏輯調色板實現到系統調色板中,新的顏色才能實現。在邏輯調色板被實現到系統調色板時,Windows會建立一個調色板映射表。當設備上下文用邏輯調色板中的顏色繪圖時,GDI繪圖函數會查詢調色板映射表以把像素值從邏輯調色板的索引轉換成系統調色板的索引,這樣當像素被輸出到視頻內存中時就具有了正確的顏色值。圖11.2說明了這種映射關系,從圖中讀者可以體會到邏輯調色板的緩沖作用。在該圖中,GDI繪圖函數使用邏輯調色板的索引1中的顏色來繪圖,通過查詢調色板映射表,得知系統調色板中的第23號索引與其完全匹配,這樣實際輸出到視頻內存中的像素值是23。注意圖中還演示了顏色的不完全匹配,即邏輯調色板中的索引15和系統調色板中的索引46。

每個要使用額外顏色的窗口都會實現自己的邏輯調色板,邏輯調色板中的每種顏色在系統調色板中都有相同或相近的匹配。調色板的實現優先權越高,匹配的精度也就越高。Windows規定,活動窗口的邏輯調色板(如果有的話)具有最高的實現優先權。這是因為活動窗口是當前與用戶交互的窗口,應該保證其有最佳的顏色顯示。非活動窗口的優先權是按Z順序自上到下確定的(Z順序就是重疊窗口的重疊順序)。活動窗口有權將其邏輯調色板作為前景調色板實現,非活動窗口則只能實現背景調色板。

提示:術語活動窗口(Active window)或前臺窗口(Foreground window)是指當前與用戶交互的窗口,活動窗口的頂端的標題條呈高亮顯示,而非活動窗口的標題條則是灰色的。活動窗口肯定是一個頂層窗口(Top-level window),頂層窗口是指沒有父窗口或父窗口是桌面窗口的窗口,這種窗口一般都有標題和邊框,主要包括框架窗口和對話框。術語重疊窗口是指作為應用程序主窗口的窗口,我們可以把對話框看成是一種特殊的重疊式窗口。

其實很簡單,可以舉個簡單的例子,調試板是指一塊區域,一個大的結構數組
數組中每個元素由 RGBQ 構成,R存放紅色值,類推,Q是保留位,一般不用。

比如有一副真彩24位圖象數據(無調色板) 一組RGB(就是一個象素)總共占3個字節
(R1G1B1) (R2G2B2)(R3G3B3) (R1G1B1) (R1G1B1)(R1G1B1)(R1G1B1)
7個象素 有5個顏色重復的象素的,總共21字節

轉成8位(256色) 有調色板
就變成了
n0 n1 n2 n0 n0 n0 n0(n1…nX 是一個字節,只存放索引號,對應調色板數組的序號)

-----調色板------
0-----R1G1B1Q
1-----R2G2B2Q
2-----R3G3B3Q
加起來才19字節
重復的象素值越多,越省空間,這就是調色板的作用,但是如果重復的次數不多的話,你看到調色板里有很多Q,這樣反而不省空間,不如用24位直接顯示了

調色板
VGA/EGA是當前最流行的圖形顯示卡,它比CGA有了效大的改進,不僅提高了屏幕的分辨率,也扶加了色彩,EGA所能提供的顏色為64種,但最多只能同時在屏幕上顯示出其中任意16種,這是因為EGA上有一組16個顏色寄存器,被稱為調色板。由系統或用戶從這64種顏色中先以最多16種填入這16個寄存器中,16個顏色寄存器分別用0~15來表示,在顯示只讀存儲器RAM中存放的是顏色寄存器代號。顯示時先從顯示RAM中取出顏色值,即寄存器代號,再由寄存器代號查到相應的寄存器,并取出其中顏色值加以顯示。雖然顯示RAM中使用同一個寄存器號(或叫顏色值),但在這個寄存器中存儲不同的值,那么在屏幕上顯示出不同的顏色,因此,這16個顏色寄存器起到了調色的作用。
顏色寄存器表示的是一種邏輯顏色,可以從64種物理顏色中隨意取出16種放入顏色寄存器中,通過調用這些寄存器來顯示所選中的顏色,中外需要說明一點,0號寄存器存放的顏色值為背景色,改變了0號寄存器中的值,則背景色隨之改變

總結

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

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