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

๊ณ„์‚ฐ ์ž…๋ ฅ

๊ณต์‹

๊ด‘๊ณ 

๊ฒฐ๊ณผ

RGB ์ƒ‰์ƒ
rgb(64, 128, 191)
๋นจ๊ฐ• 64
์ดˆ๋ก 128
ํŒŒ๋ž‘ 191

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

์ด ๋„๊ตฌ๋Š” HSL ๋ชจ๋ธ(์ƒ‰์ƒ Hue, ์ฑ„๋„ Saturation, ๋ช…๋„ Lightness)๋กœ ํ‘œํ˜„๋œ ์ƒ‰์„ ํ™”๋ฉดยทCSSยท์ด๋ฏธ์ง€ ํŒŒ์ผ์—์„œ ์“ฐ์ด๋Š” RGB ๋ชจ๋ธ๋กœ ๋ฐ”๊ฟ” ์ค๋‹ˆ๋‹ค. HSL์€ '์–ด๋–ค ์ƒ‰์ธ์ง€(์ƒ‰์ƒ)'์™€ '์–ผ๋งˆ๋‚˜ ์„ ๋ช…ํ•œ์ง€(์ฑ„๋„)', '์–ผ๋งˆ๋‚˜ ๋ฐ์€์ง€(๋ช…๋„)'๋ฅผ ๋”ฐ๋กœ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๋””์ž์ด๋„ˆ์—๊ฒŒ ์ง๊ด€์ ์ธ ๋ฐ˜๋ฉด, RGB๋Š” ๊ฐ™์€ ์ƒ‰์„ ๋นจ๊ฐ•ยท์ดˆ๋กยทํŒŒ๋ž‘ ๋น›์˜ ์–‘์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ณ€ํ™˜์€ ์ •ํ™•ํ•˜๋ฉฐ, ์œ ํšจํ•œ HSL ๊ฐ’์ด๋ผ๋ฉด ์–ด๋–ค ๊ฐ’์ด๋“  ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

HSL cylinder color model with hue around the circle, saturation toward the edge, lightness vertical
The HSL color model: hue (angle), saturation (radius) and lightness (height).

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

์ƒ‰์ƒ(Hue)์€ ๋„(0~360ยฐ), ์ฑ„๋„(Saturation)์™€ ๋ช…๋„(Lightness)๋Š” ํผ์„ผํŠธ(0~100%)๋กœ ์ž…๋ ฅํ•˜์„ธ์š”. ๊ทธ๋Ÿฌ๋ฉด 0๋ถ€ํ„ฐ 255๊นŒ์ง€์˜ rgb(r, g, b) ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‹ค์‹œ๊ฐ„ ์ƒ‰์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ํ‘œ์‹œ๋˜์–ด, ๊ฒฐ๊ณผ๋ฅผ ๋ˆˆ์œผ๋กœ ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ๊ณต์‹ ์„ค๋ช…

๋จผ์ € ์ฑ„๋„์™€ ๋ช…๋„๋ฅผ 0~1 ๋ฒ”์œ„๋กœ ํ™˜์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ฑ„๋„(์ปฌ๋Ÿฌํ’€ํ•จ)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฑ„๋„๊ฐ’(ํฌ๋กœ๋งˆ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

$$C = (1 - |2L - 1|)\,S$$

๋ณด์กฐ๊ฐ’

$$X = C\left(1 - \left|\left(\tfrac{H}{60}\bmod 2\right) - 1\right|\right)$$

๋Š” 60ยฐ์”ฉ ๋‚˜๋‰œ ์ƒ‰์ƒ ๊ตฌ๊ฐ„ ๋‚ด๋ถ€์˜ ์ค‘๊ฐ„ ํ˜ผํ•ฉ์„ ์ฒ˜๋ฆฌํ•˜๊ณ ,

$$m = L - \tfrac{C}{2}$$

๋Š” ์ „์ฒด ๊ฐ’์„ ์›ํ•˜๋Š” ๋ช…๋„์— ๋งž๊ฒŒ ๋ณด์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ์ด ์–ด๋А 60ยฐ ๊ตฌ๊ฐ„์— ์†ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ \(C\), \(X\), \(0\) ์„ \(R\), \(G\), \(B\) ์— ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ ๋ฐฐ์ •ํ•œ ๋’ค, \(m\) ์„ ๋”ํ•˜๊ณ  ๊ฐ ์ฑ„๋„์— 255๋ฅผ ๊ณฑํ•œ ๋‹ค์Œ ๋ฐ˜์˜ฌ๋ฆผํ•ฉ๋‹ˆ๋‹ค.

Triangular saturation-lightness slice showing how C, X and m map onto RGB channels
How the intermediate values C, X and m build each RGB channel.

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

HSL(210ยฐ, 50%, 50%)์ธ ๊ฒฝ์šฐ: \(S = 0.5\), \(L = 0.5\).

$$C = (1 - |0|)\cdot 0.5 = 0.5$$

\(H/60 = 3.5\) ์ด๋ฏ€๋กœ \((3.5 \bmod 2) = 1.5\),

$$X = 0.5\cdot(1 - |1.5 - 1|) = 0.25$$$$m = 0.5 - 0.25 = 0.25$$

์ƒ‰์ƒ 210ยฐ๋Š” 3๋ฒˆ ๊ตฌ๊ฐ„(180~240ยฐ)์— ์†ํ•˜๋ฏ€๋กœ \((R',G',B') = (0,\ X,\ C) = (0,\ 0.25,\ 0.5)\). ์—ฌ๊ธฐ์— \(m\) ์„ ๋”ํ•˜๊ณ  \(\times 255\) ํ•˜๋ฉด \(R = 64\), \(G = 128\), \(B = 191\) โ†’ rgb(64, 128, 191) ์ž…๋‹ˆ๋‹ค.

Color swatch showing an HSL input converting to its RGB output
A single color shown as its HSL inputs and the resulting RGB output.

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

์ž…๋ ฅ๊ฐ’์˜ ๋ฒ”์œ„๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ƒ‰์ƒ์€ 0~360๋„, ์ฑ„๋„์™€ ๋ช…๋„๋Š” 0~100ํผ์„ผํŠธ์ž…๋‹ˆ๋‹ค.

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

ํšŒ์ƒ‰๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ๋„ค. ์ฑ„๋„๋ฅผ 0์œผ๋กœ ๋‘๋ฉด ์ƒ‰์ƒ๊ฐ’๊ณผ ์ƒ๊ด€์—†์ด \(R\), \(G\), \(B\) ๊ฐ€ ๋ชจ๋‘ ๋ช…๋„๊ฐ’์„ 0~255๋กœ ํ™˜์‚ฐํ•œ ๊ฐ’๊ณผ ๊ฐ™์•„์ ธ ํšŒ์ƒ‰์ด ๋ฉ๋‹ˆ๋‹ค.

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