учитывая цвет и альфа, какой цвет и альфа добавить для создания желаемого цвета? - PullRequest
4 голосов
/ 08 сентября 2010

Если у меня есть цвет нижнего слоя и альфа-значение (C & A) и я хочу создать пользовательские C & A на экране, какова функция, чтобы определить, какие C & A должны быть добавлены в качестве слоя поверх нижнего слоя?

edit:

Я хочу продублировать «обычный» режим фотошопа, чтобы соответствовать графическому дизайну дизайнера.

Например:

BASE LAYER rgb: 255-0-0 alpha: 51/256

+

NEW LAYER rgb: ???  alpha: ???

=

DESIRED LAYER rgb: 114-0-141 alpha: 92/256

PS: ответ 0-0-255 alpha: 51/256 ... но я знаю это только потому, что написал проблему и проверил ее в фотошопе.

Ответы [ 2 ]

2 голосов
/ 08 сентября 2010

Это будет зависеть от Blend Mode , используемого между двумя слоями (нижний и верхний).На вики-странице перечислены некоторые формулы, которые могут вас заинтересовать.

Справочное руководство в формате PDF также имеет хорошее объяснение:

α r C r = [(1 - α s ) * α b * C b ] + [(1 - α b ) * α с * C с ] + α b * α с * B (C b , C s )

, где

  C = color, α = alpha value 

и индексы

r = результат, b = фон, s = источник

Также,

B (C b , C s ) = смесьфункция режима

В случае обычного режима смешивания: B (C b , C s ) = C s

Смешанная альфа определяется как:

α r = Союз (α b , α с ) и

Союз (b, s) = b + s - (b * s)

0 голосов
/ 09 сентября 2010

Я думаю, что «нормальный» режим фотошопа реализует Porter Duff «поверх» композитинга.Тогда страница wikipedia будет полезна и содержит список формул, особенно для обработки альфа.

Обратите внимание, что не все решения возможны.Т.е. альфа желаемого слоя должна быть больше, чем альфа базового слоя.

Решение может выглядеть так:

  • определить альфа нового слоя как (alpha_desired - alpha_base) / (1 - alpha_base),Обратите внимание, что (alpha_desired - alpha_base) должно быть положительным.
  • определяет цвет нового слоя, который может находиться за пределами доступного диапазона - тогда операция невозможна.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...