javascript - 柔光混合模式

标签 javascript math colors blending color-blending

我正在尝试编写一个函数来计算给定前景色和背景色的柔光。 函数如下;

var background = '0xFFFFFF';
var foreground = '0x47768C';

var calculateSoftlight = function (background, foreground) {
  var intBackground = parseInt(background, 16);
  var intForeground = parseInt(foreground, 16);

  var softlight = (1 - (2 * intForeground)) * (intBackground*intBackground) + (2 * intForeground * intBackground);
  return softlight.toString(16);
}

calculateSoftlight(background, foreground); //-8eed155338bb200000 

我正在使用此处列出的 Pegtop 公式; http://en.wikipedia.org/wiki/Blend_modes 。我不确定这个的正确实现。有什么想法吗?

最佳答案

将公式应用于每个 RGB 值,而不是使用十六进制。如果您需要使用十六进制作为输入,您可能需要进行转换。

您需要标准化每个值(例如值/255)并在公式中使用它。然后将结果乘以(并舍入)255 以转换回 8 位值。

这样的东西应该很接近,但我没有专门使用该公式,所以这还没有经过测试。

var top = top / 255,
    bot = bot / 255;

top = ((1 - 2*bot)*Math.pow(top, 2)) + 2*bot*top,
top = Math.round(top * 255);

关于javascript - 柔光混合模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684908/

相关文章:

javascript - 通过Ajax发送文件到Django

python - 除以0时,我希望它打印给定的文本

matlab - 如何改变 matlab 图(如颜色图)的线条颜色?

javascript - 颜色选择 jQuery

java - 动态更改 JFreeChart 直方图颜色?

javascript - 如何在 Windows 8 应用程序中实现和激活搜索?

javascript - FineUploader错误处理

python - 对文件特定部分的数字进行数学运算

python - 在 Sympy 中收集类似的表达式

php - 如何在 javascript 中调用用 php 编写的 Web 服务?