【发布时间】:2013-06-01 14:38:45
【问题描述】:
我继承了一个小型 Web 应用程序,该应用程序具有用户可以从下拉列表中选择颜色,然后对图像的一部分进行着色的功能。
着色是通过名为 Pixastic 的 Javascript 库进行的。
Pixastic 将图像加载到画布元素中,然后使用其Pixastic coloradjust 函数处理图像。
在我的例子中,正在处理的图像是带有黑色/灰色轮廓的透明 PNG。最终结果是只有黑色/灰色轮廓被着色。
但这是棘手的部分。
Pixastic coloradjust 函数不仅仅采用十六进制或 RGB 颜色。它需要一组 adjustment parementers 来调整红色、绿色和蓝色通道。每个调整值可以是从-1到1的十进制数。
coloradjust 函数基本上是这样工作的:
- 设
r为红色通道调整值。 - 多个
r* 255,结果为redVal - 循环遍历图像中的每个像素
- 将
redVal添加到像素的红色值(redPixel) - 如果
redVal + redPixel - 如果
redVal + redPixel> 255,则设置像素为255 - 否则,将像素设置为
redVal + redPixel*对绿色和蓝色通道做同样的事情。
如果有帮助,这里是coloradjust function 的实际代码。
我有一个现有颜色和调整值的列表。
我的任务是为应用程序添加一些新颜色,但我完全被困在弄清楚如何计算给定十六进制颜色的 PIxastic 的颜色调整值。
现有的十六进制颜色和调整值之间似乎没有任何关联,所以恐怕现有的调整值是有人手动计算出来的。
以下是现有系统中的一些示例颜色:
- #603314
- 红色调整
-0.1 - 绿色调整
-0.5 - 蓝色调
-0.3
- 红色调整
- #82bad4
- 红色调整
0.2 - 绿色调整
0.4 - 蓝色调
0.4
- 红色调整
鉴于以上所有情况,我如何计算新的十六进制颜色(如#cc9e3c)的颜色调整值?
【问题讨论】:
标签: javascript pixastic