CMYK值作为背景色

3

我需要使用RGB值设置div的背景颜色。我可以通过以下方式实现。

<div style="width: 100px; height: 100px; background-color: rgb(255,0,0)">
</div>

现在,由于我还有CMYK(0,1,0.5,0)的值,所以你能帮我指导如何使用这些值来实现相同效果吗。

我这样做了,但是没有得到理想的结果。

<div style="width: 100px; height: 100px; background-color: device-cmyk(0, 1, 0.5, 0)">
</div>

Thanks


CMYK代表的是一种非常不同于RGB的颜色空间中的颜色值(不仅仅是减法与加法),因此只有在定义了颜色配置文件的情况下才能正确地在CMYK和RGB之间进行转换。像Amini回答下面的cmyk_to_rgb2函数这样的转换可以给出相当接近的结果,但没有颜色配置文件,屏幕上的颜色永远无法匹配印刷的颜色(否则如果可以直接将CMYK和RGB相互转换,我们就可以完全使用RGB并放弃CMYK)。CMYK也不能与HSB/HSL进行比较,因为HSB/HSL仍然是加法颜色模型。 - Dai
3个回答

3

你不能直接在CSS中完成这个操作。你需要在其他地方(可能是通过服务器端脚本)将你的CMYK值转换为RGB值,然后在CSS中使用转换后的值。请注意,转换实际上与SVG函数所做的并没有太大的区别。


2
您可以使用此PHP函数或使用类似算法来实现客户端脚本语言:
function cmyk_to_rgb2($c, $m, $y, $k)
{
    $c = (255 * $c) / 100;
    $m = (255 * $m) / 100;
    $y = (255 * $y) / 100;
    $k = (255 * $k) / 100;

    $r = round(((255 - $c) * (255 - $k)) / 255) ;
    $g = round((255 - $m) * (255 - $k) / 255) ;
    $b = round((255 - $y) * (255 - $k) / 255) ; 

    $o->r = $r ;
    $o->g = $g ;
    $o->b = $b ;

    return $o ;
}

PHPJavaScript 与颜色相关。


2
请不要滥用PHP。这就是为什么网页加载需要这么长时间的原因。是的,这个小片段本身不会导致明显的速度下降。但是,如果在代码中使用了其他一百个类似的片段,那么你就会面临一个严重的加载速度问题。 - Jack G

0

你可以使用SCSS来完成:

@function cmyk($c, $m, $y, $k:0) {
  $c: $c / 255;
  $m: $m / 255;
  $y: $y / 255;
  $k: $k / 1;
  $r: 255 * (1 - $c) * (1 - $k);
  $g: 255 * (1 - $m) * (1 - $k);
  $b: 255 * (1 - $y) * (1 - $k);
  @return rgb($r, $g, $b);
}

注意:键的最大值为1,如果超过这个值,颜色开始反转。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接