답변:
음영 및 색조를위한 여러 옵션 중 :
음영의 경우 각 구성 요소에 이전 값의 1/4, 1/2, 3/4 등을 곱합니다. 계수가 작을수록 음영이 더 어두워집니다.
색조의 경우 (255-이전 값)을 계산하고 여기에 1/4, 1/2, 3/4 등을 곱한 다음 (요소가 클수록 색조가 더 밝아짐) 이전 값에 추가합니다 (각각 .component는 8 비트 정수임).
색상 조작 (예 : 색조 및 기타 음영)은 선형 RGB 에서 수행해야합니다 . 그러나 문서에 지정되거나 이미지 및 비디오로 인코딩 된 RGB 색상은 선형 RGB가 아닐 가능성이 높습니다.이 경우 소위 역 전달 함수 를 각 RGB 색상 구성 요소에 적용해야합니다. 이 기능은 RGB 색 공간에 따라 다릅니다. 예를 들어 sRGB 색 공간 (RGB 색 공간을 알 수없는 경우 가정 할 수 있음)에서이 함수는 각 sRGB 색 구성 요소 (범위 0에서 1까지)를 2.2의 거듭 제곱으로 올리는 것과 거의 동일합니다. ( "선형 RGB"는 RGB 색 공간이 아닙니다.)
"감마 보정"에 대한 Violet Giraffe의 설명을 참조하십시오.
색상 모델에 따라 더 어둡거나 (음영) 더 밝은 (색조) 색상을 생성하는 여러 가지 방법이 있습니다.
RGB
:
음영 처리 :
newR = currentR * (1 - shade_factor)
newG = currentG * (1 - shade_factor)
newB = currentB * (1 - shade_factor)
착색하려면 :
newR = currentR + (255 - currentR) * tint_factor
newG = currentG + (255 - currentG) * tint_factor
newB = currentB + (255 - currentB) * tint_factor
보다 일반적으로 색상 RGB(currentR,currentG,currentB)
과 레이어를 형성 하는 색상 RGBA(aR,aG,aB,alpha)
은 다음 과 같습니다.
newR = currentR + (aR - currentR) * alpha
newG = currentG + (aG - currentG) * alpha
newB = currentB + (aB - currentB) * alpha
여기서 (aR,aG,aB) = black = (0,0,0)
음영 및 (aR,aG,aB) = white = (255,255,255)
염색에 대한
HSV
또는 HSB
:
Value
/를 낮추 Brightness
거나Saturation
Saturation
거나 높이십시오.Value
Brightness
HSL
:
Lightness
Lightness
한 색상 모델에서 다른 색상 모델로 변환하는 공식이 있습니다. 초기 질문에 따라 예를 들어 모델을 음영 처리 RGB
하는 데 사용하려는 경우 HSV
로 변환 HSV
하고 음영 처리 한 다음 RGB
. 변환하는 공식은 사소한 것은 아니지만 인터넷에서 찾을 수 있습니다. 언어에 따라 핵심 기능으로 사용할 수도 있습니다.
RGB
구현이 정말 간단하다는 장점이 있지만 :
HSV
또는 HSB
원하는 것을 얻기 위해 두 개의 매개 변수를 사용해야하기 때문에 다소 복잡합니다 ( Saturation
& Value
/ Brightness
).HSL
내 관점에서 최고입니다.
50%
변경되지 않은 색조를 의미합니다.>50%
색조가 더 가볍다는 의미입니다 (색조).<50%
색조가 더 어둡다는 의미 (음영)Lightness
부품 만 교체하여 ).저는 현재 캔버스와 픽셀을 실험하고 있습니다.이 논리가 더 잘 작동한다는 것을 알게되었습니다.
'색조'값을 오프셋하기 위해 추가
var grey = (r + g + b) / 3;
var grey2 = (new_r + new_g + new_b) / 3;
var dr = grey - grey2 * 1;
var dg = grey - grey2 * 1
var db = grey - grey2 * 1;
tint_r = new_r + dr;
tint_g = new_g + dg;
tint_b = new_b _ db;
또는 그런 것 ...
rs = r * 0.25
,gs = g * 0.25
,bs = b * 0.25
(즉, 꽤 어두운 그늘이다); 색조 (RT, 하였다,이 BT)rt = r + (0.25 * (255 - r))
,gt = g + (0.25 * (255 - g))
,bt = b + (0.25 * (255 - b))
(즉, 꽤 밝은 색조)입니다. 나는 많은 색조를 생성하는 멋진 배열의 일부로 수행했으며 훌륭하게 작동했습니다. 도움이되기를 바랍니다. 고마워 피터.