【色彩表示】揭曉電腦色彩表示的神秘世界:RGB、CMYK 原創解析

【色彩表示】揭曉電腦色彩表示的神秘世界:RGB、CMYK 原創解析

色彩在觸控面板顯示中的表現

引言

色彩是觸控面板顯示屏上像素呈現的樣態,其由幀緩衝存儲中賦予的值決定。而在繪圖系統中,可顯示、使用和表現的色彩數量是有限的,這同樣適用於 TouchGFX 和其應用。應用中像素色彩的數量會影響顯示屏上的實際內容、幀緩衝所需的內存消耗以及整體性能等多項因素。本文將深入介紹 TouchGFX 中的色彩及可用的色彩格式,並探討其優缺點。

色彩表示 Play

色彩格式

TouchGFX 中的色彩由紅、綠和藍三組分組成,即 RGB 色彩。每個色彩分組分的取值範圍為 0 到 255。0 表明該分組分停用,而 255 則表示該分組分達到了最大值。全黑色表示為 RGB 色彩 (0,0,0),而全白色則表示為 (255,255,255)。亮綠色表示為 (0,255,0),半亮紅色表示為 (128,0,0),暗紫色表示為 (64,0,64),依此類推。灰度應用中的所有色彩均為灰色,包括黑色到白色之間的所有灰色,因此由灰色強度(而非 RGB 值)表示。可將灰度色彩理解為 R = G = B 的 RGB 色彩。

在某些情況下,我們會考慮為色彩增加一個描述色彩不透明度的分組分。與色彩的其他分組分一樣,不透明度的取值範圍也為 0 到 255。具有不透明度的色彩稱為 RGBA 色彩。A 表示 alpha,是不透明度慣例的名稱。完全不透明的黑色表示為 (0,0,0,255),具有一定透明度的紅色表示為 (255,0,0,128),依此類推。當色彩不完全不透明時,需要將其與已存在的色彩混合。這種色彩混合稱為 Alpha 混合。

色彩表示

色深

色深是指用於描述每個色彩的位數,儲存在幀緩衝中。我們將該值表示為每像素位數,簡稱 bpp。使用的位數越多,可描述的色彩就越多。常用的色深為 24 bpp。由於每一位都可能是有效或無效的,這表示可呈現 224 = 16,777,216 種不同的色彩。較少使用的另一種色深為 1 bpp。此色深適用於黑白應用,只能呈現 21 = 2 種不同的色彩。以下是關於色彩分組分範圍的註釋:

當使用的色深小於 24 bpp 時,紅、綠和藍分組分中每一個的取值範圍並非直接從 0 到 255。以 16 bpp 的紅色分組分為例,其取值範圍為 0 到 31。我們將值 31 視為 16 bpp 色深時能夠表現的最紅的色彩,即 24 bpp 色深時的值 255。一種理解方式是 16 bpp 色深的色彩只是 24 bpp 色深可能表現的色彩的一個子集。在 6/8 bpp 色系中,每個像素使用 6 位表示色彩信息(分別表示紅色、綠色和藍色的 2 位)。為了簡化幀緩衝訪問,每個像素從 6 位增加到 8 位(1 字節)。幀緩衝中多餘的兩位未使用。

在確定表示色彩所需的位數後,我們進一步研究位的內容。色彩通過位來描述紅色、綠色和藍色,但色深本身並不能指定像素中位的順序(格式)。例如:先是藍色,再是綠色,接着是紅,或者順序相反。根據應用的色深,可使用某些特定的色彩格式。在 TouchGFX 中,色深為 24 bpp 的色彩的色彩格式為 RGB888。這意味着對紅、綠和藍分量中的每一個都使用 8 個比特位。以亮紫色 RGB (255,0,255) 為例,通過將分組分組合成一個色彩值來表示這種色彩在這種格式中,紅色位於最高的 8 位,然後是綠色,藍色位於最低的 8 位。TouchGFX 對 16 bpp 色彩使用色彩格式 RGB565,即紅、綠和藍色分別為 5 位、6 位和 5 位。由於紅色有 5 位,完全亮起為 31,因此代碼中的亮紫色對於 6 bpp 色彩,TouchGFX 支持 4 種不同的色彩格式:RGBx2222、xRGB2222、BGRx2222 和 xBGR222。前述格式中之所以有 x,是因為 6 位色彩按字節的形式存儲。為了構成字節,用 2 個比特位填充色彩。同時提供 RGB 和 BGR 是考慮到一些顯示屏的需要,這樣則無需在向顯示屏發送像素前轉換像素。在 RGBx2222 模式下,表示亮黃色的代碼如下:

對於每種灰度色深,TouchGFX 都相應的支持其對應的色彩格式。4 bpp 的色彩格式表示為 GRAY4,2 bpp 為 GRAY2,1 bpp 為 BW(表示黑色和白色)。對於 4 bpp,全白色為 0xFF。TouchGFX 有一項輔助功能,可返回色彩在當前色彩格式下的正確表示方法。

圖像色彩格式

圖像大多數 UI 應用的重要部分,圖像由色彩填充而成。在 TouchGFX 中,圖像存儲在存儲器中,由特定格式的色彩填充而成。在許多情況下,圖像使用支持的像素色彩格式中的一種,但也可以使用其他圖像格式。在繪製前,特定圖像色彩格式下的圖像中的像素會被轉換為合適的像素格式。這些圖像格式中的一些格式(L8)按照色彩查找表(稱為 CLUT)來呈現相關圖像並索引到該表中。L8 圖像中色彩數量的最大可能值為 28 = 256。L8 格式佔用的空間比非 L8 格式少,以包含 200 種不同色彩的 100×100 圖像為例,存儲為 ARGB8888 格式時的空間佔用量為 100x100x32 位 = 40000 字節,存儲為 L8_ARGB8888 格式時為 100x100x8 位 + 200×32 位 = 10800 字節。

在這裡閲讀使用 L8 格式的更多相關信息。圖像格式 BW_RLE 按連續的黑色和白色存儲色彩,而不是存儲單一像素色彩。在許多情況下,這種格式也可以更高效地利用存儲空間。通常使用字節指針訪問 24 位格式 RGB888 和 32 位格式 ARGB888。此時,須瞭解像素以小端順序存儲。以 32 位色 0xFFFF7700 為例(alpha=0xFF,紅色=0xFF,綠色=0x77,藍色=0x00)。當色彩位於 32 位變量或寄存器中時,值為 0xFFFF7700。當色彩存儲在內存中時,存儲的字節為 {0x00、0x77、0xFF、0xFF}。這與 BGRA 順序對應。同樣,16 位格式 RGB565 始終通過 16 位指針訪問,因此字節順序並不重要,但會在內存中交換。對於 8 位格式,例如:ARGB2222,該色彩適合一個字節(兩個最高位中的 alpha),字節存儲不變。較小格式 GRAY4、GRAY2 和 BW 可按兩種順序存儲。低位可以是最左邊的像素或最右邊的像素。如果低位是最左邊的像素,我們稱之為 LSB 模式,反之則為 MSB 模式。

文本色彩格式

文本,更準確地説是字形,也以特定色彩格式存儲在存儲器中。TouchGFX 中可供使用的文本色彩格式為字形格式猶如小幅圖像,每個色彩條目都存儲了每個像素的不透明度。因此,之後不僅能應用實際色彩以及紅、綠和藍分量,還能繪製如存儲字形“A”的藍色和紅色版本。每個字形使用的位數越多,通常就會顯得越平滑和美觀。對於嵌入式圖形,我們希望獲得最高視覺質量,但同時也需考慮內存的消耗量。

色彩表示的藝術與科學

色彩表示是一種用色彩來傳達訊息、情感或想法的技巧。它存在於各種領域,從藝術、設計到科學和技術。

色彩表示在藝術中的應用

在藝術中,色彩被用作表達情緒、創造氛圍和象徵意義的有力工具。

色彩 情緒 氛圍 象徵
紅色 熱情、興奮 熱情、活力 愛情、危險
黃色 樂觀、快樂 明亮、歡快 希望、智慧
綠色 平衡、和諧 平靜、自然 生長、繁榮
藍色 平靜、放鬆 憂鬱、冷靜 海洋、天空
紫色 皇室、尊貴 神秘、優雅 精神、想像力

色彩表示在設計中的應用

在設計中,色彩可用於影響行為、創造視覺層次感和建立品牌識別度。

行業 色彩 用途
行銷 紅色 引起注意、促進行動
醫療保健 綠色 傳達平靜、治療環境
教育 黃色 促進學習、記憶力
食品 黃色、紅色 刺激食慾、傳達美味
科技 藍色 建立信任、可靠性

色彩表示在科學和技術中的應用

在科學和技術中,色彩表示用於傳達複雜的資料、解釋現象和進行可視化分析。

應用 色彩 用途
氣象學 彩虹色 表示温度範圍
地理學 海軍圖 表示水深
生物學 顯微鏡 染色樣本以視覺化細胞結構
醫療成像 暖色調、冷色調 表示血流或組織健康

色彩表示的技術

色彩模型:描述色彩如何表示的方法,例如 RGB、CMYK 和 HSV。

色彩空間:定義色彩範圍的立體空間,例如 LAB 和 CIELAB。

色彩量化:減少色彩表示數量以使用更少的記憶體或儲存空間。

色彩表示的挑戰

色彩表示會受到以下因素的影響:

延伸閲讀…

最常用的計算機色彩表示方法——RGB模式與CMYK模式原創

前端人需要瞭解的色彩表示方法

  • 文化差異:色彩的象徵意義因文化而異。
  • 個人偏好:不同的人對色彩有不同的反應。
  • 照明條件:不同的照明條件會改變色彩的感知。
  • 設備差異:不同的顯示器和印表機會產生不同的色彩結果。

結論

色彩表示是一種強大的工具,可以用於傳達資訊、情感和想法。從藝術和設計到科學和技術,它存在於廣泛的應用中。瞭解色彩表示的技術和挑戰對於有效使用它傳達訊息至關重要。

你會在2020年走大運嗎?

超詳細免費2020年生肖運程大分析

免費訂閱即時發給你