以编程方式,色调如何在Photoshop中加入工作?
-
10-12-2019 - |
题
在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”过滤器/混合模式。 (下面的例子)
彩色算法:
- 将RGB的颜色转换为HSL;
- 将色调值更改为想要的色调值(在我的情况下,在我的情况下为172⁰或0.477);
- 将更新HSL恢复为RGB
注意:这在桌面上是可以的,但在智能手机上它明显慢,我找到了。
您可以通过比较这三个图像来查看差异。原件:
颜色:
fireworks的“混合色调”算法(我认为与photoshop的相同):
彩色滤镜可能是一个好的替代品。