색상 값은 추가되지 않습니다.
는 컬러 Y
위에 컬러 X
플롯
이 결과 색
C
의 각 색상 채널의 값에 의해 주어진다 : 부동 소수점 표현을 이용
C = X * a + Y * (a-1)
(각 채널은 0에서 1까지의 값); 여기서 a
은 X
의 알파 채널입니다. (쉽게 0-255로 다시 변환됩니다). 흰색에 대한
, Y
때문에, 모든 채널에 대한 1 : a
가 0 인 경우
C = X * a + (a-1)
그래서, 당신은 명확하게 찾을 수 있습니다 X, 의미 : 색깔이 완전히 투명 경우를 결합 된 색상에 아무런 차이가 없습니다.
마찬가지로 색상이 흰색 인 경우 (X
= 1) 알파를 결정할 수 없습니다 (조합 된 색상은 알파에 관계없이 흰색 임).
또한, 당신은 다른 사람을 모른 채 X
또는 a
중 하나를 찾을 수 없습니다.
색상의 알파를 알고 있다면 색상이 무엇인지 알 수 있지만 결합 된 색상 (C
)이 이산 값 (예 : 0에서 255까지의 정수) 인 경우에는 반올림되며, 따라서 플롯 된 색상의 근사값 만 얻을 수 있습니다 (X
). 그것이 얼마나 정확한지는 알파에 달려 있습니다 (색이 투명 할수록 색을 정확하게 결정할 수 있습니다).
따라서 X 풀면 :
8 비트 컬러 채널 (24 비트 컬러) 용
X * a = C - a - 1
Therefore: X = (C - a - 1)/a
:
X = 255 * (C/255 - a/255 - 1)/(a/255)
(기븐 6 자리 16 진수의 값은, 각각이 적용 숫자 쌍, C
).
당신은 부동 소수점 계산을 피하기 위해 그것을 최적화 할 수있다.
그 어떤 사용하지만 그건 당신이 할 수있는 모든 있는지 모르겠어요.
[RGB 변환 -> RGBA] 가능한 복제본 (http : // stackoverflow.co.kr/questions/6672374/convert-rgb-rgba) – BoltClock