javascript - 在网页上使用 CMYK

标签 javascript html css

我需要在我的网页上使用 CMYK 颜色。有什么方法可以在 CSS 中使用 CMYK,或者可以使用 JavaScript 将 CMYK 转换为 RGB?

编辑:
我的意思是我有 CMYK 符号的颜色创建算法,我需要在网页上使用它。

最佳答案

没有完美的算法可以将 CMYK 转换为 RGB。 CYMK是减色系统,RGB是加色系统。每个都有不同的gamuts ,这意味着有些颜色无法在其他颜色系统中表示,反之亦然。两者都是设备相关的颜色空间,这实际上意味着您真正获得的颜色取决于您使用哪种设备来再现该颜色,这就是为什么您为每个设备设置颜色配置文件以调整它如何将颜色生成为更“绝对”的东西.

您能做的最好的事情就是将一个空间的模拟近似于另一个空间。整个计算机科学领域都致力于此类工作,而且它非常重要。

如果您正在寻找执行此操作的启发式方法,那么 Cyrille 提供的链接是非常简单的数学运算,并且很容易反转以接受 CYMK 颜色并生成合理的 RGB 传真。

一个非常简单的启发式方法是将青色映射到 0x00FFFF,洋红色映射到 0xFF00FF,黄色映射到 0xFFFF00,黑色(键)映射到0x000000。然后做这样的事情:

function cmykToRGB(c,m,y,k) {

    function padZero(str) {
        return "000000".substr(str.length)+str
    }

    var cyan = (c * 255 * (1-k)) << 16;
    var magenta = (m * 255 * (1-k)) << 8;
    var yellow = (y * 255 * (1-k)) >> 0;

    var black = 255 * (1-k);
    var white = black | black << 8 | black << 16;

    var color = white - (cyan | magenta | yellow );

    return ("#"+padZero(color.toString(16)));


}

用 cmyk 范围从 0.0 到 1.0 调用 cmykToRGB。这应该会给你一个 RGB 颜色代码。但这同样只是一种启发式方法,这些颜色空间之间的实际对话要复杂得多,并且考虑到的变量比这里表示的要多得多。您的里程数可能会有所不同,并且您从中得到的颜色可能“看起来不正确”

jsFiddle here

关于javascript - 在网页上使用 CMYK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869248/

相关文章:

javascript - Gulp JS 不输出 CSS 文件

javascript - 通过 Javascript 隐藏 Telerik RadEditor EditorToolGroups

php - 在 Excel 中查看多个 HTML 表格时无法设置 TD 宽度

javascript - 如何在网页上找到合适的位置进行点击?

css - <li> 的列表分成两列并具有自动/等宽

javascript - React-Redux 容器抛出 "mapStateToProps() in Connect(ModalRoot) must return a plain object. Instead received undefined."

javascript - 如何更改传单中的标记颜色?

javascript - 我怎样才能让用户能够点击一个事件来强制他们向下滚动?

html - 溢出隐藏和位置绝对菜单

javascript - 如何根据是否存在另一个 CSS 类组合来更改 CSS 类?