Программно, как смешивание оттенков работает в фотошопе? - PullRequest
2 голосов
/ 10 марта 2012

В Photoshop вы можете установить режим наложения слоя «Hue». Если этот слой, например, заполнен синим цветом, то, по-видимому, он берет слой ниже и делает его синим везде, где существует небеловатый цвет.

Мне интересно, что он на самом деле делает, хотя. Если у меня есть фоновый слой с пикселем aarrggbb, а поверх него установлен режим смешивания «Оттенок», и на этом слое есть пиксель aarrggbb, как эти два значения объединяются, чтобы получить результат, который мы видим?

Он не просто сбрасывает rrggbb со слоя ниже. Если бы он это сделал, он бы тоже покрасил в белый и черный. Это также не допустит изменения цвета.

Если фоновый пиксель равен 0xff00ff00 и соответствующий пиксель слоя оттенка равен 0xff0000ff, то я предполагаю, что конечный результат будет просто 0xff0000ff, потому что синий ff заменяет зеленый ff. Но, если фоновый пиксель равен 0x55112233, а пиксель слоя оттенка - 0xff0000ff, как он получится с оттенком синего, который он имеет?

Причина, по которой я спрашиваю, заключается в том, что я хотел бы снимать различные изображения и программно менять цвет изображения в моем приложении. Вместо того, чтобы хранить 8 разных версий одного и того же изображения с разными цветами, я хотел бы сохранить одно изображение и раскрасить его по мере необходимости.

Ответы [ 2 ]

0 голосов
/ 21 января 2013

Я искал способ воспроизвести этот режим наложения в javascript / canvas, но я только придумал режим "colorize" фильтра / наложения.(Примеры ниже)

Colorize алгоритм:

  1. преобразовать цвета из RGB в HSL;
  2. изменить значение оттенка на желаемое(в моем случае 172⁰ или 0,477);
  3. верните обновление HSL в RGB

Примечание: на рабочем столе это нормально, но на смартфоне оно заметно медленное, я обнаружил.

Вы можете увидеть разницу, сравнив эти три изображения.Оригинал:

original image

colorize:

result with my algorithm

Алгоритм "смешанного оттенка" в Fireworks (который, я думаю, такой же, как в Photoshop):

Fireworks

Цветной фильтр может быть хорошей заменой.

Вопрос преобразования RGB / HSL

Hue / Chroma и HSL в Википедии

0 голосов
/ 20 июня 2012

Я нашел алгоритм для преобразования RGB в HSV здесь: http://www.cs.rit.edu/~ncs/color/t_convert.html

Конечно, в нижней части этой страницы упоминается, что у объекта Java Color уже есть методы для преобразования между RGB и HSV, поэтому я просто использовал это.

...