Вниз
Скачать: CL | DM;

Математика наложения   Найти похожие ветки 

← →
Ricks ©   (2007-04-02 11:03) [0]

Есть две картинки, содержащие alpha канал (будем считать это слоями). Как наложить их друх на друга так, чтобы цвета этих точек усреднялись должным образом. Например:
если на полупрозрачный (50%) черный наложить 50% белый то получим 75% цвет (170, 170, 170), если же наоборот — получим 75% цвет (85, 85, 85).
Значение альфа вычисляется по формуле:
A = (a0/255 + (1-a0/255)*a1/255) * 255;
А вот как быть с цветом?


← →
Ricks ©   (2007-04-02 12:01) [1]

Хотя может быть и формула для alpha неправильная... :(


← →
oxffff ©   (2007-04-02 12:07) [2]

displayColor = sourceColor* alpha/255 + backgroundColor* (255 – alpha) /255


← →
oxffff ©   (2007-04-02 12:08) [3]

Примени эту формулу для R,G,B составляющих по отдельности


← →
Ricks ©   (2007-04-02 12:25) [4]

Спасибо, но эта формула не работает.
Смотри:
если фон (0, 0, 0, 0) (полность. прозрачный черный цвет) и на него мы накладываем 50% (255, 255, 255, 127) белый то получим в итоге:

255 * 127 / 255 + {0 * (255 - 127) / 255]|=0} = 127

А должны были получить (255, 255, 255, 127)!


← →
TRUNK ©   (2007-04-02 12:29) [5]

NewAlpha = 1 - (1-Alpha_1)*(1-Alpha_2);
NewRed = (Red_1*Alpha_1*(1-Alpha_2) + Red_2*Alpha_2)/NewAlpha
NewGreen = (Green_1*Alpha_1*(1-Alpha_2) + Green_2*Alpha_2)/NewAlpha
NewBlue = (Blue_1*Alpha_1*(1-Alpha_2) + Blue_2*Alpha_2)/NewAlpha

P.S. Все значения в диапазоне [0..1]


← →
Ricks ©   (2007-04-02 12:32) [6]

Сейчас испытаю!


← →
ЮЮ ©   (2007-04-02 12:33) [7]

> А должны были получить (255, 255, 255, 127)!

если он полупрозрачный, откуда (255, 255, 255)?
(127, 127, 127) как раз и означает, что черезн него "просвечивается" черный. В результате имеем "серый"


← →
Ricks ©   (2007-04-02 12:37) [8]


> ЮЮ


> "просвечивается" черный

но ведь черный то — полностью прозрачный, т.е никакого черного там не должно быть!


← →
Ricks ©   (2007-04-02 12:39) [9]


> TRUNK ©


СПАСИБО тебе огромное!!!!


← →
TRUNK ©   (2007-04-02 12:42) [10]

Перед автором стоит задача преобразовать два последовательных наложение в одно, которое приведёт к эквивалентному результату.


> если он полупрозрачный, откуда (255, 255, 255)?
> (127, 127, 127) как раз и означает, что черезн него "просвечивается"
> черный

Наложение происходит на полностью прозрачный чёрный цвет, т.е. его как бы и нет, в результате у нас остаётся только наложенный белый.


← →
oxffff ©   (2007-04-02 13:38) [11]


> А должны были получить (255, 255, 255, 127)!


Кто должен?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.039 c
15-1177628719
ЭРИКА
2007-04-27 03:05
2007.05.27
ВСЕМ ,КТО РОДИЛСЯ СЕГОДНЯ!


11-1160053393
Thaddy
2006-10-05 17:03
2007.05.27
New kol website


2-1178790029
zero
2007-05-10 13:40
2007.05.27
Запретить добовление новой строки в DBGridEh


8-1158154178
Lockdog
2006-09-13 17:29
2007.05.27
Определение цвета и преобразование палитры


15-1177774830
oldman
2007-04-28 19:40
2007.05.27
Ну вот и суббота (которая понедельник) на исходе...




   Наверх