什麼是 Hex 轉 HSL 色彩轉換器?
這個工具能將十六進位色碼(也就是 CSS 與設計軟體中常見的 #RRGGBB 格式)轉換成 HSL 色彩模型,也就是色相(Hue)、飽和度(Saturation)與亮度(Lightness)。相較於 hex 或 RGB,HSL 通常更符合人類直覺,因為它正好對應我們看待顏色的方式:這是什麼顏色(色相)、顏色有多鮮豔(飽和度),以及顏色偏亮還是偏暗(亮度)。它適用於任何以 RGB 為基礎的顏色,除了標準的 sRGB hex 表示法之外,不受任何國家或規範限制。
如何使用
輸入一組 hex 色碼,例如 #3498DB。開頭的 # 可加可不加,三位數的縮寫格式(例如 #0AF)也會自動展開為 #00AAFF。轉換器會回傳對應的 HSL 三組數值,並附上解碼後的紅、綠、藍各通道值(0–255)。
計算公式說明
首先將 hex 拆解成紅、綠、藍三個位元組,並各自除以 255,把數值正規化到 0–1 的範圍。設 max 與 min 為這三個值中的最大與最小者。亮度就是兩者的平均:
$$L = \frac{\max + \min}{2}$$當 max 等於 min 時(也就是灰色),飽和度為 0。否則,若 \(L > 0.5\),則 \(S = \dfrac{\max - \min}{2 - \max - \min}\),否則 \(S = \dfrac{\max - \min}{\max + \min}\)。色相則取決於哪個通道為最大值,並乘以 60 換算成角度。
$$S = \begin{cases} \dfrac{\max - \min}{2 - \max - \min}, & L > 0.5 \\[0.6em] \dfrac{\max - \min}{\max + \min}, & L \le 0.5 \end{cases}$$$$H = 60^{\circ} \times \begin{cases} \dfrac{G - B}{d} \bmod 6, & \max = R \\[0.6em] \dfrac{B - R}{d} + 2, & \max = G \\[0.6em] \dfrac{R - G}{d} + 4, & \max = B \end{cases} \qquad d = \max - \min$$
實例演算
以 #3498DB 為例:\(R = 52\)、\(G = 152\)、\(B = 219\)。正規化後:\(r \approx 0.2039\)、\(g \approx 0.5961\)、\(b \approx 0.8588\)。\(\max = b = 0.8588\)、\(\min = r = 0.2039\),所以 \(L = 0.5314\)(53.14%)。由於 \(L > 0.5\),\(S = \dfrac{0.6549}{2 - 1.0627} = 0.6987\)(69.87%)。藍色為最大值,因此 \(H = 60 \times \left(4 + \dfrac{0.2039 - 0.5961}{0.6549}\right) = 60 \times 3.4011 \approx 204.07^{\circ}\)。結果為 hsl(204, 70%, 53%)。
常見問題
支援縮寫 hex 嗎?支援,像 #F0C 這樣的三位數色碼會自動展開。
HSL 數值精確嗎?色相、飽和度與亮度都以完整精度計算,僅在顯示時做四捨五入;原始數值同樣可供取用。
一定要加 # 嗎?不用,無論有沒有開頭的 #,轉換器都能正確處理。