最近のブラウザではCSSで半透明カラーを指定できる。
div.box { background-color:rgba(255, 248, 200, 0.5); }
背景を透かしたとき見かけ上この色になるようにしたい、と思うと背景色からいちいち計算しなくてはいけないので面倒だ。面倒なので、アルファブレンドした結果が指定した色になるような透過色のrgbaの値を計算してくれる簡単なツールを作成してみた。
http://nullpon.moe/dev/tool/alpha_blender/
計算結果が0から255の値に収まらないこともあるので、必ずしも指定の色になるような透過色が存在するとは限らない。
アルファブレンドは以下の式で求める。(0:合成結果、1:透過色、2:背景色、a:透過率)
r0 = r1 * a + r2 * (1 - a) g0 = g1 * a + g2 * (1 - a) b0 = b1 * a + b2 * (1 - a)
この計算でrbg値を求めるのがアルファブレンディング。[r0, g0, b0] は合成した結果、見かけ上この色になってほしいという色である。これと [r2, g2, b2](背景色)と a(透過率)から [r1, g1, b1] (透過色)を求めている。単なる一次方程式なので難しくない。