jQuery插件将color css转换为灰度?

时间:2012-05-29 17:58:28

标签: jquery css

我一直在寻找一种方法将我的整个css样式表从颜色值转换为各自的灰度值 - 但是我找不到一个好方法(除了打开Photoshop并以艰难的方式去做)。

是否有方法可以执行此操作,是否有人知道是否有可以执行此操作的jQuery脚本?

注意:这不是关于将彩色图像转换为灰度图像的问题,而是将完整的样式表转换为灰度。

1 个答案:

答案 0 :(得分:6)

这是一个Javascript函数,它将获取RGB值,并返回去饱和的RGB值。

function desaturate(r, g, b) {
    var intensity = 0.3 * r + 0.59 * g + 0.11 * b;
    var k = 1;
    r = Math.floor(intensity * k + r * (1 - k));
    g = Math.floor(intensity * k + g * (1 - k));
    b = Math.floor(intensity * k + b * (1 - k));
    return [r, g, b];
}

如果你想在一次犯规中对一个特定元素进行去饱和,你可以做类似的事情:

function rgb_to_string(r, g, b) {
    return 'rgb(' + r + ', ' + g + ', ' + b + ')';
}

function desaturate_element(selector) {
    var fg = $(selector).css('color').match(/\d+/g);
    var bg = $(selector).css('background-color').match(/\d+/g);
    $(selector).css('color', desaturate(fg[0], fg[1], fg[2]));
    $(selector).css('background-color', desaturate(bg[0], bg[1], bg[2]));
}

this JSFiddle中查看此操作。那些去饱和乘数来自this thread

另一件事,k值是你想要去饱和的程度。 1将完全去饱和,0根本不会去饱和。