MCP로 연결 →

계산 입력

공식

Show calculation steps (1)
  1. Hue

    Hue: RGB to HSL 색상 변환기

    Hue in degrees, selected by which channel is the maximum; result is wrapped into 0-360. If delta = 0 the color is gray and H = 0.

광고

결과

HSL 색상
hsl(9, 100%, 64%)
색상 / 채도 / 명도
색상 (도) 9.13°
채도 (%) 100%
명도 (%) 63.92%

RGB와 HSL이란?

RGB는 빨강(Red)·초록(Green)·파랑(Blue) 빛을 섞어 색을 표현하며, 각 채널은 0부터 255까지의 값을 가집니다. HSL은 같은 색을 좀 더 직관적인 세 가지 수치로 나타냅니다. 색상(Hue)은 0~360°의 색상환에서 색이 위치한 지점, 채도(Saturation)는 색의 선명한 정도(0~100%), 명도(Lightness)는 밝고 어두운 정도(0~100%)입니다. 명도나 채도를 조절하면 곧바로 "더 밝게", "더 어둡게", "더 선명하게", "더 칙칙하게"로 이어지기 때문에, 디자이너에게는 HSL이 다루기 훨씬 편한 경우가 많습니다.

RGB 정육면체와 HSL 원기둥 색 모델 나란히 비교
RGB는 빨강, 초록, 파랑 채널로 색을 정의하고, HSL은 색상, 채도, 명도로 표현합니다.

변환기 사용 방법

색상의 빨강·초록·파랑 값을 각각 0에서 255 사이로 입력하세요. 계산기가 즉시 대응하는 HSL 값을 알려주며, CSS에 hsl(H, S%, L%) 형태로 바로 붙여 넣을 수 있습니다.

변환 공식 풀이

먼저 각 채널을 255로 나눠 0과 1 사이의 값으로 정규화합니다. 이 중 가장 큰 값을 max, 가장 작은 값을 min이라고 합시다. 명도는 \(L = (max + min) / 2\) 로 구합니다. 만약 max와 min이 같다면 그 색은 회색 계열이므로 채도와 색상은 모두 0이 됩니다. 그렇지 않을 때, 채도는 \(L > 0.5\)인 경우 \((max - min) / (2 - max - min)\), \(L \le 0.5\)인 경우 \((max - min) / (max + min)\) 으로 계산합니다. 색상은 어느 채널이 최댓값인지에 따라 결정되며 도(°) 단위(0~360)로 변환됩니다.

$$L = \frac{C_{max} + C_{min}}{2}, \quad S = \begin{cases} \dfrac{\Delta}{2 - C_{max} - C_{min}} & L > 0.5 \\[0.6em] \dfrac{\Delta}{C_{max} + C_{min}} & L \le 0.5 \end{cases}$$

$$\text{where}\quad \left\{ \begin{aligned} R &= \frac{\text{Red}}{255}, \; G = \frac{\text{Green}}{255}, \; B = \frac{\text{Blue}}{255} \\ C_{max} &= \max(R,G,B), \; C_{min} = \min(R,G,B), \; \Delta = C_{max} - C_{min} \end{aligned} \right.$$

$$H = 60^{\circ} \times \begin{cases} \left(\dfrac{G - B}{\Delta}\right) \bmod 6 & C_{max} = R \\[0.7em] \dfrac{B - R}{\Delta} + 2 & C_{max} = G \\[0.7em] \dfrac{R - G}{\Delta} + 4 & C_{max} = B \end{cases}$$

광고
색상 각도, 채도 반지름, 명도 높이를 보여주는 HSL 원기둥
색상은 각도(0~360°), 채도는 중심에서의 거리, 명도는 수직 위치입니다.

계산 예제

토마토 레드 RGB(255, 99, 71)을 예로 들어 보겠습니다. 정규화하면 (1.0, 0.388, 0.278)이 됩니다. \(max = 1.0\), \(min = 0.278\)이므로 \(L = 0.639 \to 63.9\%\)입니다. \(L > 0.5\)이므로 $$S = (1.0 - 0.278) / (2 - 1.0 - 0.278) = 0.722 / 0.722 = 1.0 \to 100\%$$입니다. 최댓값이 빨강이므로 $$H = 60 \times ((0.388 - 0.278) / 0.722) = 60 \times 0.1525 = 9.1^{\circ}$$입니다. 결과는 hsl(9, 100%, 64%)입니다.

자주 묻는 질문

회색 계열의 색상 값은 왜 0인가요? 빨강·초록·파랑 값이 모두 같으면 우세한 색이 없어 색상이 정의되지 않으며, 관례상 0으로 표기합니다.

HSL과 HSV/HSB는 같은 건가요? 아닙니다. HSL과 HSV는 색상은 공유하지만 채도와 세 번째 값을 다른 방식으로 계산합니다. 이 도구는 HSL 값을 출력합니다.

결과를 CSS에 바로 붙여 넣어도 되나요? 네. 최신 브라우저는 hsl(9, 100%, 64%)를 색상 값으로 그대로 인식합니다.

최종 업데이트: