我继承了一个小型 Web 应用程序,该应用程序具有用户可以从下拉列表中选择颜色的功能,然后对图像的一部分进行着色。
着色是通过一个名为Pixastic的 Javascript 库进行的。
Pixastic 将图像加载到画布元素中,使用其Pixastic coloradjust功能处理图像。
就我而言,正在处理的图像是带有黑色/灰色轮廓的透明 PNG。最终结果是只有黑色/灰色轮廓被着色。
但这是棘手的部分。
Pixasticcoloradjust
函数不仅仅采用十六进制或 RGB 颜色。它需要一组调整参数来调整红色、绿色和蓝色通道。每个调整值可以是从 -1 到 1 的十进制数。
该coloradjust
功能基本上是这样工作的:
- 设
r
为红色通道调整值。 - 多个
r
* 255 并让结果为redVal
- 循环遍历图像中的每个像素
- 添加
redVal
到像素的红色值(redPixel) - 如果
redVal + redPixel
< 0,则将像素设置为 0 - 如果
redVal + redPixel
> 255,则将像素设置为 255 - 否则,将像素设置为
redVal + redPixel
*对绿色和蓝色通道执行相同的操作。
如果有帮助,这里是coloradjust
函数的实际代码。
我有一个现有颜色和调整值的列表。
我的任务是为应用程序添加一些新颜色,但我完全坚持弄清楚如何计算给定十六进制颜色的 PIxastic 的颜色调整值。
现有的十六进制颜色和调整值之间似乎没有任何相关性,所以恐怕现有的调整值是有人手动计算出来的。
以下是现有系统中的一些示例颜色:
- #603314
- 红色调整
-0.1
- 绿色调整
-0.5
- 蓝色调整
-0.3
- 红色调整
- #82坏4
- 红色调整
0.2
- 绿色调整
0.4
- 蓝色调整
0.4
- 红色调整
鉴于以上所有情况,我怎样才能找出新的十六进制颜色的颜色调整值#cc9e3c
?