不透明度が100%のRGBカラーを使用している場合。
透明なアルファチャネルを備えた同じ色(またはそれに近い色)が必要です。白地に透明色を塗ります。
RGBA色を計算するにはどうすればよいですか?
私が求めているのは、この質問の反対だと思います。
透明度が最大のRGBA色が必要で、白い背景の上に描画すると、元のRGB色になりますか?
R 0、G 0、B 0を元の色の成分とし、それぞれ0.0〜1.0の範囲とし、R 、 G 、 B 、 Aを新しいRGBA色の成分とします(A = 1は100%の不透明度を示します)。 )。色は以下を満たさなければならないことを私たちは知っています:
R 0 = A・R +(1 − A)
G 0 = A・G +(1 − A)
B 0 = A・B +(1 − A)
これは、 Aを知っていれば、 R、G、Bを簡単に解くことができます。
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、1 − G 0、1 − B 0)= 1 − min(R 0、G 0、B 0)
したがって、必要な色は次のとおりです。
A = 1 − min(R 0、G 0、B 0)
R = 1 −(1 − R 0)/ A
G = 1 −(1 − G 0)/ A
B = 1 −(1 − B 0)/ A
追伸 背景が黒の場合、同じ式はさらに簡単になります。
A = max(R 0、G 0、B 0)
R = R 0 / A
G = G 0 / A
B = B 0 / A
Pps。明確にするために、上記のすべての式は、事前に乗算されていないRGBA色用です。事前に乗算されたアルファの場合、上記で計算されたR、G、および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 0、G = G 0、B = B 0です。)