Программно, как работает HUE, работающая в Photoshop?
-
10-12-2019 - |
Вопрос
в Photoshop Вы можете установить режим смешивания слоя, чтобы быть «оттенками». Если этот слой, например, наполнен синим, то, похоже, возьмет слой ниже и делает его всеми синим, где существует небезовый цвет.
Мне интересно, что это на самом деле делает. Если у меня есть фоновый слой с пикселем AARRGGBB, и слой сверху, который устанавливается в режим смеси «оттенок», и в этом слое есть пиксель Aargbb, как эти два значения объединены, чтобы дать результат, который мы видим? .
Это не просто отбрасывает rrggbb с слоя ниже. Если это сделало это, что окрасит белый и черный. Это также не позволит изменения цвета.
Если фоновый пиксель 0xFF00FF00, а соответствующий слой оттенка Pixel - 0xFF0000FF, то я предполагаю, что конечный результат будет просто 0xFF0000FF, потому что FF Blue заменяет FF Green. Но, если фоновый пиксель 0x55112233, а Pixel Pixel Hue - 0xFF0000FF, как он придумывает оттенок синего цвета, который он подходит?
Причина, по которой я спрашиваю, это то, что я хотел бы сделать различные изображения и менять оттенок изображения программно в моем приложении. Вместо того, чтобы хранить 8 разных версий одного и того же изображения с разными цветами, я хотел бы хранить одно изображение и окрасить его по мере необходимости.
Решение
Я нашел алгоритм для преобразования RGB в HSV здесь: http://www.cs.rit.edu/~ncs/color/t_convert.html
Конечно, внизу этой страницы упоминается, что java цветной объект уже имеет методы преобразования между RGB и HSV, поэтому я только что использовал это.
Другие советы
Я исследовал способ повторить этот режим смешивания в JavaScript / Canvas, но я придумал только режим фильтра / смеси «Colorize». (Примеры ниже)
Colorize алгоритм:
- Преобразовать цвета от RGB в HSL;
- Измените значение оттенка на нужный (в моем случае 172 ⁰ или 0,477);
- возвращает обновление HSL к RGB
Примечание: это нормально на рабочем столе, но оно заметно медленно на смартфоне, я нашел.
Вы можете увидеть разницу, сравнивая эти три изображения. Оригинал:
Раскатка:
Фейерверки "Смешающий оттенок" Алгоритм (который я думаю, такой же, как Photoshop):