17

2つのARGBピクセルを混合するにはどうすればよいですか?

ソース:en.wikipedia.org/wiki/Alpha_compositing#mediaviewer/File:Alpha_compositing.svg

ここで、Aは(アルファ付きの赤)、Bは(アルファ付きの青)です。

4

3 に答える 3

36

画像を取得したのと同じウィキペディアの記事から引用:

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)
于 2009-12-22T04:35:46.217 に答える
5

上記は間違ったアルゴリズムです。これは、aA = 0に置き換えることで確認できます。次に、色Bを完全に透明な色Aとブレンドしようとすると、論理的には色Bは変更されませんが、この式に従って変更されます。 グラデーションの透明度との不適切なブレンドの結果。 したがって、正しい解決策は次のようになります。

aOut = aA + (aB * (255 - aA) / 255)
rOut = (rA * aA + rB * aB * (255 - aA) / 255)/aOut 
gOut = (gA * aA + gB * aB * (255 - aA) / 255)/aOut 
bOut = (bA * aA + bB * aB * (255 - aA) / 255)/aOut 

グラデーションの透明度との正しいブレンドの結果。

于 2020-11-03T01:27:57.263 に答える
2

http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blendingですが、ウィキペディアではargb値は0.0から1.0の範囲であると言われているため、表記に少し混乱しています。したがって、この式でFA=19が得られるとは思いません。明確にできますか?

編集:あなたがFA = 19についてビジネスを始めたので、私はその公式を採用する傾向があります。

于 2009-12-22T04:06:36.607 に答える