6

不透明度が100%のRGBカラーを使用している場合。

透明なアルファチャネルを備えた同じ色(またはそれに近い色)が必要です。白地に透明色を塗ります。

RGBA色を計算するにはどうすればよいですか?

私が求めているのは、この質問の反対だと思います。

4

1 に答える 1

5

透明度が最大のRGBA色が必要で、白い背景の上に描画すると、元のRGB色になりますか?

R 0G 0B 0を元の色の成分とし、それぞれ0.0〜1.0の範囲とし、R G B A新しいRGBA色の成分とします(A = 1は100%の不透明度を示します)。 )。色は以下を満たさなければならないことを私たちは知っています:

R 0 = AR +(1 − A
G 0 = AG +(1 − A
B 0 = AB +(1 − A

これは、 Aを知っていれば、 RGBを簡単に解くことができます。

R =(R 0 − 1 + A)/ A = 1 −(1 − R 0)/ A
G =(G 0 − 1 + A)/ A = 1 −(1 − G 0)/ A
B =(B 0 − 1 + A)/ A = 1 −(1 − B 0)/ A

R≥0、G≥0、B≥0が必要ため 1 − R0≥A、1 − G0≥A、1 − B0≥AとなりA可能な最小値は次のようになります。

A = max(1 − R 0、1G 0、1B 0)= 1 − min(R 0G 0B 0

したがって、必要な色は次のとおりです。

A = 1 − min(R 0G 0B 0
R = 1 −(1 − R 0)/ A
G = 1 −(1 − G 0)/ A
B = 1 −(1 − B 0)/ A


追伸 背景がの場合、同じ式はさらに簡単になります。

A = max(R 0G 0B 0
R = R 0 / A
G = G 0 / A
B = B 0 / A


Pps。明確にするために、上記のすべての式は、事前に乗算されていないRGBA色用です。事前に乗算されたアルファの場合、上記で計算されたRG、およびBにAを乗算するだけで、次のようになります。

R = A・(1 −(1 − R 0)/ A)= R 0 −(1 − A
G = A・(1 −(1 − G 0)/ A)= G 0 −(1 − A
B = A・(1 −(1 − B 0)/ A)= B 0 −(1 − A

(または、背景が黒の場合は、単にR = R 0G = G 0B = B 0です。)

于 2012-12-28T03:10:44.917 に答える