HEX to HSL ์์ ๋ณํ๊ธฐ๋?
์ด ๋๊ตฌ๋ 16์ง์ ์์ ์ฝ๋(CSS์ ๋์์ธ ํ๋ก๊ทธ๋จ์์ ํํ ์ฐ๋ #RRGGBB ํ๊ธฐ)๋ฅผ HSL ์์ ๋ชจ๋ธ โ ์์(Hue), ์ฑ๋(Saturation), ๋ช
๋(Lightness)๋ก ๋ณํํฉ๋๋ค. HSL์ HEX๋ RGB๋ณด๋ค ๋ ์ง๊ด์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ฌ๋์ด ์์ ์ธ์ํ๋ ๋ฐฉ์ ๊ทธ๋๋ก ์์ ์ค๋ช
ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฆ ์ด๋ค ์์ธ์ง(์์), ์ผ๋ง๋ ์ ๋ช
ํ์ง(์ฑ๋), ์ผ๋ง๋ ๋ฐ๊ฑฐ๋ ์ด๋์ด์ง(๋ช
๋)๋ฅผ ๋ํ๋
๋๋ค. ํ์ค sRGB HEX ํ๊ธฐ๋ฅผ ๋ฐ๋ฅด๋ ๋ชจ๋ RGB ๊ธฐ๋ฐ ์์์ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํน์ ๊ตญ๊ฐ๋ ๋ณ๋์ ํ์ค์ ์ข
์๋์ง ์์ต๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
#3498DB์ฒ๋ผ HEX ์์ ๊ฐ์ ์
๋ ฅํ์ธ์. ๋งจ ์์ #๋ ๋ฃ์ด๋ ๋๊ณ ์๋ตํด๋ ๋ฉ๋๋ค. ๋ํ #0AF์ ๊ฐ์ ์ธ ์๋ฆฌ ๋จ์ถํ์ ์๋์ผ๋ก #00AAFF๋ก ํ์ฅ๋ฉ๋๋ค. ๋ณํ๊ธฐ๋ ์ด์ ํด๋นํ๋ HSL ๊ฐ๊ณผ ํจ๊ป ๋์ฝ๋ฉ๋ ๋นจ๊ฐยท์ด๋กยทํ๋ ์ฑ๋ ๊ฐ(0~255)์ ํจ๊ป ๋ณด์ฌ์ค๋๋ค.
๋ณํ ๊ณต์ ์์ธํ ๋ณด๊ธฐ
๋จผ์ HEX ๊ฐ์ ๋นจ๊ฐยท์ด๋กยทํ๋ ๋ฐ์ดํธ๋ก ๋๋ ๋ค, ๊ฐ ๊ฐ์ 255๋ก ๋๋์ด 0~1 ๋ฒ์๋ก ์ ๊ทํํฉ๋๋ค. ์ด ์ธ ๊ฐ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ max, ๊ฐ์ฅ ์์ ๊ฐ์ min์ด๋ผ๊ณ ํฉ์๋ค. ๋ช ๋๋ ๋จ์ํ ๋์ ํ๊ท ์ ๋๋ค: \(L = (\max + \min) / 2\). ์ฑ๋๋ max์ min์ด ๊ฐ์ ๋(ํ์) 0์ด ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, L > 0.5์ด๋ฉด \(S = (\max - \min) / (2 - \max - \min)\), ๊ทธ ์ธ์๋ \(S = (\max - \min) / (\max + \min)\)์ ๋๋ค. ์์(Hue)์ ์ด๋ ์ฑ๋์ด ์ต๋๊ฐ์ธ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ, 60์ ๊ณฑํด ๊ฐ๋(๋)๋ก ํ์ฐํฉ๋๋ค.
$$L = \frac{\max + \min}{2}, \quad 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}$$
$$\text{where}\quad \left\{ \begin{aligned} (R,G,B) &= \frac{\text{RGB from }\text{Hex Color}}{255} \\ \max &= \operatorname{max}(R,G,B),\ \min = \operatorname{min}(R,G,B) \end{aligned} \right.$$
$$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 = \frac{0.6549}{2 - 1.0627} = 0.6987\ (69.87\%)$$์
๋๋ค. ํ๋์ด ์ต๋๊ฐ์ด๋ฏ๋ก $$H = 60 \times \left(4 + \frac{0.2039 - 0.5961}{0.6549}\right) = 60 \times 3.4011 \approx 204.07^{\circ}$$์
๋๋ค. ๊ฒฐ๊ณผ: hsl(204, 70%, 53%).
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋จ์ถํ HEX๋ ์
๋ ฅํ ์ ์๋์? ๋ค โ #F0C์ ๊ฐ์ ์ธ ์๋ฆฌ ์ฝ๋๋ ์๋์ผ๋ก ํ์ฅ๋ฉ๋๋ค.
HSL ๊ฐ์ด ์ ํํ๊ฐ์? ์์ยท์ฑ๋ยท๋ช ๋๋ ๋ชจ๋ ์ ์ฒด ์ ๋ฐ๋๋ก ๊ณ์ฐ๋๋ฉฐ, ํ๋ฉด์ ํ์ํ ๋๋ง ๋ฐ์ฌ๋ฆผ๋ฉ๋๋ค. ๋ฐ์ฌ๋ฆผํ์ง ์์ ์๋ณธ ๊ฐ๋ ํ์ธํ ์ ์์ต๋๋ค.
๋งจ ์์ # ๊ธฐํธ๊ฐ ๊ผญ ํ์ํ๊ฐ์? ์๋์. ๋ณํ๊ธฐ๋ #๊ฐ ์๋ ์๋ ๋ชจ๋ ์ฒ๋ฆฌํฉ๋๋ค.