Вопрос

Точный цвет фона известен.

Представьте себе сглаженный шрифт на зеленом фоне. Теперь мы хотим изменить цвет фона изображения на красный.

Итак ... Как мне извлечь " без фона " часть цвета из пикселя и добавьте его (или «смешайте») поверх другого цвета bg впоследствии?

Мы также знаем цвет шрифта, поэтому знаем, какие пиксели полностью непрозрачны.

Это было полезно?

Решение

Каждый пиксель изображения - это либо цвет фона, либо цвет шрифта, либо их сочетание. Таким образом, вы можете указать целое изображение со значениями фона 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top