2つのARGBピクセルを混合するにはどうすればよいですか?
例
ここで、Aは(アルファ付きの赤)、Bは(アルファ付きの青)です。
画像を取得したのと同じウィキペディアの記事から引用:
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)
上記は間違ったアルゴリズムです。これは、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
http://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blendingですが、ウィキペディアではargb値は0.0から1.0の範囲であると言われているため、表記に少し混乱しています。したがって、この式でFA=19が得られるとは思いません。明確にできますか?
編集:あなたがFA = 19についてビジネスを始めたので、私はその公式を採用する傾向があります。