什麼是 HSL 轉 RGB 轉換器?
HSL 是 Hue(色相)、Saturation(飽和度)與 Lightness(亮度)的縮寫,是一種相當直覺的顏色描述方式:色相是色環上的角度(0-360°),飽和度代表色彩的鮮豔程度(0-100%),亮度則決定顏色偏亮或偏暗(0-100%)。RGB 則用紅、綠、藍三個色頻來描述同一個顏色,每個色頻的範圍都是 0 到 255,正是螢幕、CSS 與影像檔案所採用的格式。這個轉換器能把 HSL 顏色精準換算成對應的 RGB 數值。
使用方式
輸入以度數表示的色相、以百分比表示的飽和度,以及以百分比表示的亮度。工具會立即算出對應的 rgb(r, g, b) 數值,並顯示即時色塊預覽,讓你可以直接用眼睛確認顏色是否正確。
公式說明
首先把 S 與 L 換算成 0-1 的小數。彩度(Chroma)代表色彩的飽滿程度:
$$C = (1 - |2L - 1|)\cdot S$$中間分量為
$$X = C\,(1 - |(H/60 \bmod 2) - 1|)$$而匹配值
$$m = L - \frac{C}{2}$$則負責把整體調整到正確的亮度。色相會被切成六個 60° 的區段,每個區段都會依特定順序把 \(C\)、\(X\) 與 0 分配給 R、G、B 三個位置。最後再把 \(m\) 加回每個分量,並乘以 255(四捨五入到最接近的整數)。
$$(R,G,B) = \big( (R_1+m)\cdot 255,\; (G_1+m)\cdot 255,\; (B_1+m)\cdot 255 \big)$$實際範例
以 HSL(210°, 50%, 60%) 為例:\(S = 0.5\)、\(L = 0.6\)。\(C = (1 - |1.2 - 1|)\times 0.5 = (1 - 0.2)\times 0.5 = 0.4\)。\(H/60 = 3.5\),因此 \(X = 0.4 \times (1 - |3.5 \bmod 2 - 1|) = 0.4 \times (1 - 0.5) = 0.2\)。\(m = 0.6 - 0.2 = 0.4\)。落在第 3 區段(\(\le H/60 < 4\)),得到 \((R',G',B') = (0, X, C) = (0, 0.2, 0.4)\)。各分量加上 \(m\) 後:
$$(0.4, 0.6, 0.8) \times 255 = (102, 153, 204)$$
常見問題
為什麼我的 RGB 數值被四捨五入了?RGB 各色頻都是 0 到 255 的整數,所以換算後的數值會四捨五入成最接近的整數。
飽和度設成 0% 會得到什麼?完全去飽和的顏色就是灰色,其數值只由亮度決定——此時 R、G、B 三個色頻的值會完全相同。
如果我輸入超過 360 的色相,會自動繞回嗎?會。色相會取 360 的餘數,所以 370° 的效果等同於 10°。