正確な背景色は既知です。
緑の背景にアンチエイリアスフォントを想像してみてください。次に、画像の背景色を赤に変更します。
だから..ピクセルから色の「非背景」部分を抽出し、後で別のbg色の上に追加(または「ブレンド」)するにはどうすればよいですか?
フォントの色もわかっているので、どのピクセルが完全に不透明であるかがわかります。
正確な背景色は既知です。
緑の背景にアンチエイリアスフォントを想像してみてください。次に、画像の背景色を赤に変更します。
だから..ピクセルから色の「非背景」部分を抽出し、後で別のbg色の上に追加(または「ブレンド」)するにはどうすればよいですか?
フォントの色もわかっているので、どのピクセルが完全に不透明であるかがわかります。
画像のすべてのピクセルは、背景色、フォント色、またはその2つのブレンドのいずれかです。したがって、画像全体を背景RGB値、フォントRGB値、および0〜1の値の配列で指定できます。たとえば、0はピクセルが背景色であることを意味し、1はピクセルがフォント色であることを意味します。0.1のような値は、ピクセルがほとんど背景色であり、フォントの色が少しあることなどを意味します。
次のような表現:
blend_value = ((pixel.R - bg.R) / (font.R - bg.R)
+ (pixel.G - bg.G) / (font.G - bg.G)
+ (pixel.B - bg.B) / (font.B - bg.B)) / 3
画像内の任意のピクセルに対してこれらの値を提供します。新しい背景色を使用して新しいRGB値を作成するには、この値を使用してフォントの色を新しい背景色とブレンドします。
new_pixel.R = blend_value * font.R + (1 - blend_value) * new_bg.R
new_pixel.G = blend_value * font.G + (1 - blend_value) * new_bg.G
new_pixel.B = blend_value * font.B + (1 - blend_value) * new_bg.B