在photoshop中,您可以将图层的混合模式设置为“色调”。如果该图层是填充蓝色,那么它似乎拍摄了下层,并使它全部蓝色存在,无论存在非白斑。

我想知道它实际做了什么。如果我有一个带有像素AArrggBB的背景层,那么该图层上的第二个图层并在该图层上有一个像素AArrggBB,那么这两个值如何组合以给出我们看到的结果?

它不只是从下层删除rrggbb。如果它确实如此,也是白色和黑色的。它也不会允许颜色变化。

如果背景像素是0xFF00FF,并且相应的色调层像素是0xFF0000FF,则我假设最终结果将是0xFF0000FF,因为FF蓝色替换FF绿色。但是,如果背景像素是0x55112233,并且色调层像素是0xFF0000FF,则它如何亮起它的蓝色阴影,即它出现?

我问的原因是,我想在我的应用程序中以编程方式拍摄各种图像并更改图像的色调。而不是用不同的颜色存储8个不同版本的相同图像,而不是使用不同的颜色,而不是根据需要存储一个图像并将其颜色。

有帮助吗?

解决方案

我发现一个算法将RGB转换为HSV在此处: http://www.cs.rit.edu/~ncs/color/t_convert.html 当然,在该页面的底部,它提到了Java Color对象已经有用于在RGB和HSV之间转换的方法,因此我刚使用了。

其他提示

我一直在研究一种在JavaScript / Canvas中复制混合模式的方法,但我只会提出“Colorize”过滤器/混合模式。 (下面的例子)

彩色算法:

  1. 将RGB的颜色转换为HSL;
  2. 将色调值更改为想要的色调值(在我的情况下,在我的情况下为172⁰或0.477);
  3. 将更新HSL恢复为RGB

    注意:这在桌面上是可以的,但在智能手机上它明显慢,我找到了。

    您可以通过比较这三个图像来查看差异。原件:

    颜色:

    fireworks的“混合色调”算法(我认为与photoshop的相同):

    彩色滤镜可能是一个好的替代品。

    RGB / HSL转换问题

    色调/色度和hsl上wikipedia

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top