Как смешать два пикселя ARGB? - PullRequest
13 голосов
/ 22 декабря 2009

Как смешать два пикселя ARGB?

Пример

Source: en.wikipedia.org/wiki/Alpha_compositing#mediaviewer/File:Alpha_compositing.svg

Здесь A (красный с альфа-каналом) и B (синий с альфа-каналом).

Ответы [ 2 ]

32 голосов
/ 22 декабря 2009

Взято из той же статьи в Википедии, где вы получили изображение:

C_o = C_a \alpha_a + C_b \alpha_b \left(1 - \alpha_a\right)

Перевод в значения в диапазоне от 0 до 255:

rOut = (rA * aA / 255) + (rB * aB * (255 - aA) / (255*255))
gOut = (gA * aA / 255) + (gB * aB * (255 - aA) / (255*255))
bOut = (bA * aA / 255) + (bB * aB * (255 - aA) / (255*255))
aOut = aA + (aB * (255 - aA) / 255)
2 голосов
/ 22 декабря 2009

Похоже, это то, что вы хотите: http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending,, но я немного озадачен вашей записью, поскольку в Википедии сказано, что значения argb должны находиться в диапазоне от 0,0 до 1,0. Поэтому я не думаю, что эта формула даст вам FA = 19. Вы можете уточнить?

Редактировать: теперь, когда вы занялись бизнесом с FA = 19, я склонен придерживаться этой формулы.

...