2012-04-22 2 views
0

의 투명 값을 얻을 수 있습니다. rgb-color는 흰색 배경에 놓을 때 rgba입니다. (알파위한 스탠드)색 빼기 - 필요 난 그냥 RGB 컬러 (#ebfcff)의 RGBA 값을 얻기 위해 시도 된 컬러

그래서 : searchedColour + #FFFFFF = #ebfcff 내 평가에서

솔루션 #ebfcff에서 흰색 빼기하는 것입니다. 하지만 어떻게 색을 빼는거야?

나는 이미 적절한 해결책을 찾았습니다. 누군가가 주어진 RGB-Color에서 흰색을 겹치면 주어진 색상과 동일한 rgba 형식의 새 색상을 얻는 방법을 알고 있습니까?

+0

[RGB 변환 -> RGBA] 가능한 복제본 (http : // stackoverflow.co.kr/questions/6672374/convert-rgb-rgba) – BoltClock

답변

2

색상 값은 추가되지 않습니다.

는 컬러 Y 위에 컬러 X 플롯

이 결과 색 C의 각 색상 채널의 값에 의해 주어진다 : 부동 소수점 표현을 이용

C = X * a + Y * (a-1) 

(각 채널은 0에서 1까지의 값); 여기서 aX의 알파 채널입니다. (쉽게 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).

당신은 부동 소수점 계산을 피하기 위해 그것을 최적화 할 수있다.

그 어떤 사용하지만 그건 당신이 할 수있는 모든 있는지 모르겠어요.