고정 배경을 가지고 있다고 언급 했으므로 공의 색은 여전히 임의적 일 수 있지만 여전히 배경을 보완하는 특정 범위에 속해야합니다.
기초. 그렇게하기 전에 기본 사항을 알아야합니다. 다음 색상을 고려하십시오.
Black #000000 rgb(0,0,0)
Red #FF0000 rgb(255,0,0)
Green #00FF00 rgb(0,255,0)
Blue #0000FF rgb(0,0,255)
Yellow #FFFF00 rgb(255,255,0)
Cyan #00FFFF rgb(0,255,255)
Pink #FF00FF rgb(255,0,255)
Gray #C0C0C0 rgb(192,192,192)
White #FFFFFF rgb(255,255,255)
색상 혼합 RGB [(0..255), (0..255), (0..255)]는 위와 같이 새 색상을 만듭니다.
네거티브 컬러 계산 네거티브 컬러 계산은 시안 색, 녹색, 자주색, 파란색의 노랑색 변환과 같습니다.
Red #FF0000 rgb(255,0,0) -> Cyan #00FFFF rgb(0,255,255)
Green #00FF00 rgb(0,255,0) -> Purple #FF00FF rgb(255,0,255)
Blue #0000FF rgb(0,0,255) -> Yellow #FFFF00 rgb(255,255,0)
보색
보완 색상 계산에 대한 참조에 따라 http://serennu.com/colour/rgbtohsl.php
HSL 소개
HSL은 색조, 채도 및 밝기 측면에서 색상을 표현하여 색상의 세 가지 속성 각각에 대해 숫자를 제공합니다.
색조는 휠의 360 °를 나타내는 0 ° ~ 359 °의 각도로 표시되는 컬러 휠의 색상 위치입니다. 0 °는 적색, 180 °는 적색의 시안 색 등입니다.
채도는 색상의 강도, 얼마나 흐리거나 밝은 지입니다. 채도가 낮을수록 색상이 더 흐릿하게 (회색으로) 나타납니다. 이것은 100 %가 완전 채도이고 가장 밝고 0 %가 채도없는 회색 인 백분율로 표시됩니다.
밝기는 색상이 얼마나 밝은 지입니다. 채도와 약간 다릅니다. 색상이 흰색 일수록 밝기 값이 높을수록 검은 색 일수록 밝기가 낮아집니다. 따라서 100 % 밝기는 색상을 흰색으로, 0 % 밝기는 색상을 검정색으로, "순수한"색상은 50 % 밝기입니다.
설명하는 것보다 채도와 밝기의 차이를 보는 것이 더 쉽습니다. 명확하게하려면 색상 계산기 페이지에서 명도 및 채도 변형을보고 시작 색상으로 밝은 색상을 선택하십시오.
따라서 HSL 표기법은 다음과 같이 색조, 채도 및 밝기 값을 다음과 같은 순서로 제공합니다.
빨간색 : 0 ° 100 % 50 % 옅은 분홍색 : 0 ° 100 % 90 % 시안 : 180 ° 100 % 50 % 다음 단계는 다음과 같습니다.
색상을 HSL로 변환하십시오.
색조 값을 반대쪽 색조의 값으로 변경하십시오 (예 : 색조가 50 ° 인 경우 반대쪽 바퀴의 230 °-180 ° 더 먼 거리).
채도와 명도 값을 그대로 둡니다.
이 새로운 HSL 값을 원래 색상 표기법 (RGB 또는 기타)으로 다시 변환하십시오.
EasyRGB.com과 같은 사이트는 RGB에서 HSL로 또는 그 반대로 일반 변환을 수행 할 수 있습니다.
참조에 따라 PHP에서 수행 된 프로그래밍 예제
RGB에서 HSL로 변환
Blue # 0000FF rgb (0,0,255) 위의 값은 Red Hexadecimal 00 + Green Hexadecimal 00 + Blue Hexadecimal FF로 표시 될 수 있습니다.
$redhex = substr($hexcode,0,2);
$greenhex = substr($hexcode,2,2);
$bluehex = substr($hexcode,4,2);
빨강 10 진수 0 + 녹색 10 진수 0 + 파랑 10 진수 255로 표시 될 수도 있습니다.
$var_r = (hexdec($redhex)) / 255;
$var_g = (hexdec($greenhex)) / 255;
$var_b = (hexdec($bluehex)) / 255;
이제이 값을 rgb2hsl 루틴에 연결하십시오. 아래는 해당 PHP 버전의 EasyRGB.com 일반 코드입니다.
입력 값은 위의 $ var_r, $ var_g 및 $ var_b입니다. 출력은 HSL $ h, $ s 및 $ l과 동일합니다. 입력 값과 같이 1의 분수로 다시 표시됩니다.
$var_min = min($var_r,$var_g,$var_b);ttt
$var_max = max($var_r,$var_g,$var_b);
$del_max = $var_max - $var_min;
$l = ($var_max + $var_min) / 2;
if ($del_max == 0)
{
$h = 0;
$s = 0;
}
else
{
if ($l < 0.5)
{
$s = $del_max / ($var_max + $var_min);
}
else
{
$s = $del_max / (2 - $var_max - $var_min);
};
$del_r = ((($var_max - $var_r) / 6) + ($del_max / 2)) / $del_max;
$del_g = ((($var_max - $var_g) / 6) + ($del_max / 2)) / $del_max;
$del_b = ((($var_max - $var_b) / 6) + ($del_max / 2)) / $del_max;
if ($var_r == $var_max)
{
$h = $del_b - $del_g;
}
elseif ($var_g == $var_max)
{
$h = (1 / 3) + $del_r - $del_b;
}
elseif ($var_b == $var_max)
{
$h = (2 / 3) + $del_g - $del_r;
};
if ($h < 0)
{
$h += 1;
};
if ($h > 1)
{
$h -= 1;
};
};
이제 변수 $ h, $ s 및 $ l에서 색상을 HSL 값으로 사용합니다. 이 세 가지 출력 변수는이 단계에서도 및 백분율이 아닌 1의 분수로 다시 유지됩니다. 예를 들어 청록색 (180 ° 100 % 50 %)은 $ h = 0.5, $ s = 1 및 $ l = 0.5로 나타납니다.
다음으로 반대쪽 색조, 즉 180도 또는 0.5 거리의 값을 찾으십시오 (수학자에게는이를 수행하는보다 우아한 방법이 있지만 확실합니다).
반대 색조, $ h2 계산
$h2 = $h + 0.5;
if ($h2 > 1)
{
$h2 -= 1;
};
보색의 HSL 값은 이제 $ h2, $ s, $ l입니다. 그래서 우리는 이것을 RGB로 다시 변환 할 준비가되었습니다. 이번에는 입력 및 출력 형식이 다릅니다. 코드 상단의 내 의견을 참조하십시오.
입력은 보색의 HSL 값이며 $ h2, $ s, $ l은 1의 분수이므로 출력은 보통 255255255 형식의 RGB이고 $ r, $ g, $ b로 유지됩니다. 색조는 hue_2_rgb 함수를 사용하여 변환됩니다. 이 코드의 끝에서
if ($s == 0)
{
$r = $l * 255;
$g = $l * 255;
$b = $l * 255;
}
else
{
if ($l < 0.5)
{
$var_2 = $l * (1 + $s);
}
elset
{
$var_2 = ($l + $s) - ($s * $l);
};
$var_1 = 2 * $l - $var_2;
$r = 255 * hue_2_rgb($var_1,$var_2,$h2 + (1 / 3));
$g = 255 * hue_2_rgb($var_1,$var_2,$h2);
$b = 255 * hue_2_rgb($var_1,$var_2,$h2 - (1 / 3));
};
// Function to convert hue to RGB, called from above
function hue_2_rgb($v1,$v2,$vh)
{
if ($vh < 0)
{
$vh += 1;
};
if ($vh > 1)
{
$vh -= 1;
};
if ((6 * $vh) < 1)
{
return ($v1 + ($v2 - $v1) * 6 * $vh);
};
if ((2 * $vh) < 1)
{
return ($v2);
};
if ((3 * $vh) < 2)
{
return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6));
};
return ($v1);
};
그리고 그 루틴이 끝나면 마침내 255255255 (RGB) 형식의 $ r, $ g 및 $ b가 6 자리 16 진수로 변환 될 수 있습니다.
$rhex = sprintf("%02X",round($r));
$ghex = sprintf("%02X",round($g));
$bhex = sprintf("%02X",round($b));
$rgbhex = $rhex.$ghex.$bhex;
$ rgbhex는 우리의 해답입니다 – 16 진수의 보색입니다.
색상 배경이 파란색 또는 0,0,255이므로 HSL은
색조 (H) : 240도 / 채도 (S) : 100 % / 밝기 (L) : 4.9 %
240의 반대는 60 원이고, 다시 RGB로 변환하면 값은 # 181800입니다.