Привет всем, в матане не силён нужна помощь.
Есть картинка с прозрачностью ,например
Что мне нужно сделать что-бы после выполнения я получил что-то вроде этого.
Понимаю ,что нужно разбить на пиксели и с каждым провести некие действия, а потом собрать обратно ,но как это всё будет в виде кода?
По моему мнению, это легче всего сделать в цветовой модели HSL, т.е. если картинка представлена в RGB, то мы переводим её в HSL, где просто равномерно "размазываем" яркость, от 0 у края до 1 в центре. Ссылка на преобразование:
https://ru.wikipedia.org/wiki/HSL
Как, по моему мнению выглядит алгоритм, если допустить что прямое и обратное преобразование вы реализовали, и они называются соотв. RGB_TO_HSL(R,G,B) и HSL_TO_RGB(H,S,L), где на вход подается 3 числа, и ф-я возвращает 3 числа соотв. другой цветовой модели:
Начинаем с начала картинки (коорд. 0, 0, и движемся до конца, просто как по массиву). Берем значение текущего пикселя из массива, скармливаем его RGB_TO_HSL, получаем представление в HSL. H и L меняем на желаемые, (задаем желаемый цвет в RGB, скармливаем его RGB_TO_HSL, запоминаем H и S, вставляем эти H,S, на место "старых", не меняя L). Скармливаем получившееся HSL_TO_RGB, устанавливаем новые значения пикселя, пока есть пиксели. Не пробовал, по идее должно работать!
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости