2色が混ざり合っています。結果の色のRGBと混合された色の1つのRGBがある場合、どういうわけか2番目の色を計算できますか?
私が言おうとしていることを視覚的に説明しようとします。フリッカーのリンクはこちら
http://www.flickr.com/photos/48150615@N08/4407414157
真ん中の円の不透明度は20%です
背景色と同じ色の値を得るためにそれを差し引くことができるように、円の色の値を知る方法はありますか?
2色が混ざり合っています。結果の色のRGBと混合された色の1つのRGBがある場合、どういうわけか2番目の色を計算できますか?
私が言おうとしていることを視覚的に説明しようとします。フリッカーのリンクはこちら
http://www.flickr.com/photos/48150615@N08/4407414157
真ん中の円の不透明度は20%です
背景色と同じ色の値を得るためにそれを差し引くことができるように、円の色の値を知る方法はありますか?
まず、それらをどのように混合するかによって異なります。つまり、RGB コンポーネント (これは青 (0,0,255) + 黄 (255,255,0) == グレー (128,128,128)) を平均化するか、色相、彩度、明度で作業することができます。 「予想通り」の結果。
とにかく、どちらの場合も、それはいくつかの簡単な計算です:
C3 = (C1 + C2) / 2
C2 = (C3 * 2) - C1
タスクを正しく理解していれば...
学校の数学をやろう
c は初期イメージの色、t は透明色の色、a (アルファの場合) は透明度、c' は結果の色です。
c' = (1 - a) * t + a * c
あなたはcを見つけたいです。
c = (c' - (1 - a) * t) / a
a、t、c' を知る必要があります。
CIELAB 色空間は、色の違いを計算するために特別に設計されていますが、やり過ぎかもしれません。おそらくHSVはあなたにとって簡単な解決策です。
各コンポーネントを差し引くだけです。多くの場合、コンポーネントは 16 進数形式で格納されます。この場合、数値を 10 進数に変換するか、16 進数で計算する必要があります。