MCP๋กœ ์—ฐ๊ฒฐ โ†’

๊ณ„์‚ฐ ์ž…๋ ฅ

๊ณต์‹

๊ด‘๊ณ 

๊ฒฐ๊ณผ

RGB ์ƒ‰์ƒ
rgb(102, 153, 204)
๋นจ๊ฐ• (R) 102
์ดˆ๋ก (G) 153
ํŒŒ๋ž‘ (B) 204

HSL โ†’ RGB ๋ณ€ํ™˜๊ธฐ๋ž€?

HSL์€ ์ƒ‰์ƒ(Hue), ์ฑ„๋„(Saturation), ๋ช…๋„(Lightness)์˜ ์•ฝ์ž๋กœ, ์ƒ‰์„ ์ง๊ด€์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ƒ‰์ƒ์€ ์ƒ‰์ƒํ™˜์—์„œ์˜ ๊ฐ๋„(0~360ยฐ)๋ฅผ, ์ฑ„๋„๋Š” ์ƒ‰์˜ ์„ ๋ช…ํ•จ(0~100%)์„, ๋ช…๋„๋Š” ์ƒ‰์ด ๋ฐ์€์ง€ ์–ด๋‘์šด์ง€(0~100%)๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด RGB๋Š” ๊ฐ™์€ ์ƒ‰์„ ๋นจ๊ฐ•(Red)ยท์ดˆ๋ก(Green)ยทํŒŒ๋ž‘(Blue) ์„ธ ์ฑ„๋„๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ๊ฐ ๊ฐ’์€ 0๋ถ€ํ„ฐ 255๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ์ด ํ˜•์‹์€ ํ™”๋ฉด, CSS, ์ด๋ฏธ์ง€ ํŒŒ์ผ์—์„œ ๋‘๋ฃจ ์“ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™˜๊ธฐ๋Š” HSL ์ƒ‰์ƒ์„ ์ •ํ™•ํžˆ ๋Œ€์‘ํ•˜๋Š” RGB ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ” ์ค๋‹ˆ๋‹ค.

์› ๋‘˜๋ ˆ์— ์ƒ‰์ƒ, ๊ฐ€์žฅ์ž๋ฆฌ ์ชฝ์œผ๋กœ ์ฑ„๋„, ์ถ•์„ ๋”ฐ๋ผ ๋ช…๋„๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” HSL ์ƒ‰์ƒ ์›ํ†ต
HSL ์ƒ‰์ƒ ๋ชจ๋ธ: ์ƒ‰์ƒ์€ ๊ฐ๋„, ์ฑ„๋„๋Š” ์ถ•์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ, ๋ช…๋„๋Š” ์ˆ˜์ง ์ถ•์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์ƒ‰์ƒ์€ ๊ฐ๋„(๋„)๋กœ, ์ฑ„๋„์™€ ๋ช…๋„๋Š” ๊ฐ๊ฐ ํผ์„ผํŠธ(%)๋กœ ์ž…๋ ฅํ•˜์„ธ์š”. ๊ณ„์‚ฐ๊ธฐ๋Š” ๊ณง๋ฐ”๋กœ ๋Œ€์‘ํ•˜๋Š” rgb(r, g, b) ๊ฐ’์„ ๋ณด์—ฌ ์ฃผ๊ณ , ์‹ค์‹œ๊ฐ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ƒ‰์ƒ ๊ฒฌ๋ณธ๊นŒ์ง€ ํ‘œ์‹œํ•ด ์ƒ‰์„ ๋ˆˆ์œผ๋กœ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ๊ณต์‹ ํ’€์ด

๋จผ์ € S์™€ L์„ 0~1 ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ฑ„๋„(์ƒ‰์˜ ๊ฐ•๋„)์— ํ•ด๋‹นํ•˜๋Š” ํฌ๋กœ๋งˆ๋Š” \(C = (1 - |2L - 1|)\cdot S\)๋กœ ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ค‘๊ฐ„ ์„ฑ๋ถ„ ๊ฐ’์€ \(X = C\,(1 - |(H/60 \bmod 2) - 1|)\)์ด๋ฉฐ, ๋งค์น˜ ๊ฐ’ \(m = L - C/2\)๋Š” ์ „์ฒด ๊ฐ’์„ ์˜ฌ๋ฐ”๋ฅธ ๋ช…๋„๋กœ ๋ณด์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์€ 60ยฐ์”ฉ 6๊ฐœ์˜ ๊ตฌ๊ฐ„์œผ๋กœ ๋‚˜๋‰˜๊ณ , ๊ฐ ๊ตฌ๊ฐ„๋งˆ๋‹ค 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)$$ $$\text{where}\quad \left\{ \begin{aligned} C &= (1 - |2L - 1|)\cdot S \\ X &= C\,(1 - |(H/60 \bmod 2) - 1|) \\ m &= L - \tfrac{C}{2} \\ S &= \frac{\text{Saturation }(\%)}{100},\quad L = \frac{\text{Lightness }(\%)}{100} \\ H &= \text{Hue }(^{\circ}) \end{aligned} \right.$$

๊ณ„์‚ฐ ์˜ˆ์‹œ

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(\(3 \le H/60 < 4\))์—์„œ๋Š” \((R',G',B') = (0, X, C) = (0, 0.2, 0.4)\)์ด ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— m์„ ๋”ํ•˜๋ฉด \((0.4, 0.6, 0.8)\)์ด๊ณ , 255๋ฅผ ๊ณฑํ•˜๋ฉด (102, 153, 204)์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ HSL ๊ฐ’๊ณผ ๋ณ€ํ™˜๋œ RGB ์ถœ๋ ฅ์„ ๋‚˜๋ž€ํžˆ ๋†“์€ ์ƒ‰์ƒ ๊ฒฌ๋ณธ
๋ณ€ํ™˜ ์˜ˆ์‹œ๋Š” ์ž…๋ ฅํ•œ HSL ๊ฐ’๊ณผ ๋ณ€ํ™˜๋œ RGB ์ƒ‰์ƒ ๊ฒฌ๋ณธ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

RGB ์ˆซ์ž๊ฐ€ ์™œ ๋ฐ˜์˜ฌ๋ฆผ๋˜๋‚˜์š”? RGB ์ฑ„๋„์€ 0๋ถ€ํ„ฐ 255๊นŒ์ง€์˜ ์ •์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋น„์œจ๋กœ ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆ˜๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•ฉ๋‹ˆ๋‹ค.

์ฑ„๋„๊ฐ€ 0%์ด๋ฉด ์–ด๋–ค ์ƒ‰์ด ๋‚˜์˜ค๋‚˜์š”? ์ฑ„๋„๊ฐ€ ์™„์ „ํžˆ ๋น ์ง„ ์ƒ‰์€ ํšŒ์ƒ‰์ด๋ฉฐ, ๊ทธ ๊ฐ’์€ ๋ช…๋„์—๋งŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰ R, G, B ์„ธ ์ฑ„๋„ ๊ฐ’์ด ๋ชจ๋‘ ๊ฐ™์•„์ง‘๋‹ˆ๋‹ค.

360์„ ๋„˜๋Š” ์ƒ‰์ƒ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ˆœํ™˜ํ•˜๋‚˜์š”? ๋„ค. ์ƒ‰์ƒ์€ 360์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€(modulo 360)๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ 370ยฐ๋Š” 10ยฐ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ์—…๋ฐ์ดํŠธ: