Рассчитать полученный RGB из 2 цветов, один из которых прозрачный - PullRequest
6 голосов
/ 17 августа 2010

Я ищу формулу для их преобразования.

Я знаю, что для преобразования общей прозрачности это

альфа * новый + (1 - альфа) * ​​старый

У меня есть:

Color A : RGB( 85, 113, 135 )
Color B : RGB( 43, 169, 225 )

Цвет A имеет непрозрачность 90% и накладывается поверх цвета B, в результате чего получается

Color C : RGB( 65, 119, 145 )

Мой вопрос: как получить цвет C?Если я заменю Цвет B на другую вещь, как мне получить Цвет C?

Вот еще один пример, тот же базовый цвет:

Color A : RGB( 85, 113, 135 )
Color B : RGB( 45, 67, 82 )
--------
Color C : RGB( 65, 109, 131 )

Это рабочие примеры, сделанные с изображениями - яm теперь пытаюсь вычислить оставшийся цвет C, чтобы я мог назначить цвет фона.


ОБНОВЛЕНИЕ, пожалуйста, смотрите принятый ответ.red в приведенных выше примерах странно - принятый ответ имеет правильную формулу для всех цветов, я тестировал его в Photoshop.

1 Ответ

5 голосов
/ 17 августа 2010

Похоже, что ваша формула в точности соответствует формуле, использованной в ваших примерах, рассчитанной для компонента и округленной в большую сторону.

R_c: = потолок (R_a * альфа) + потолок (R_b * (1- альфа))

G_c := ceiling(G_a * alpha) + ceiling (G_b * (1 - alpha))
B_c := ceiling(B_a * alpha) + ceiling (B_b * (1 - alpha))

Странно, но компонент R, похоже, не следует правилам.Я склонен удивляться, почему.

...