I'm writing a colour picker that gets the pixel RGB values from wherever you point to on the screen. I want to also have the option of specifying that the colour I picked already has an alpha value. I'm just wondering how I can calculate the resulting colour.
For example:
The resulting pixel colour is 240,247,249 but I know that the original colour had a 10% opacity and was on top of a white (255,255,255) background. What's the calculation to work out the original RGB values?
The standard blending equation is:
out = alpha * new + (1 - alpha) * old
Where out
, new
and old
are RGB colors, and alpha
is a floating point number in the range [0,1].
So, you have (for red):
240 = 0.1 * newR + 0.9 * 255
Solving for newR
, we get:
newR = (240 - 0.9 * 255) / 0.1
which evaluates to 105. Repeat for the other components, and you're done.