You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CIE XYZ转sRGB颜色空间转换异常求助:代码输出值错误

CIE XYZ转sRGB颜色空间实现问题

我正尝试将CIE XYZ颜色空间转换为sRGB,以此作为CIELAB与sRGB颜色空间之间的中间转换步骤。参考了相关技术资料中的公式进行实现,但目前代码输出结果不正确(可与在线颜色转换器结果对比),且必须对线性RGB值取绝对值才能让公式运行。请问正确的实现方式是什么?我的代码哪里出错了?

以下是我的实现代码:

// Convert XYZ to sRGB
function xyz2rgb(xyz){
    const r =  3.2404542*xyz.x + -1.5371385*xyz.y + -0.4985314*xyz.z
    const g = -0.9692660*xyz.x + 1.8760108*xyz.y + 0.0415560*xyz.z
    const b =  0.0556434*xyz.x + -0.2040259*xyz.y + 1.0572252*xyz.z

    //convert to srgb
    function adj(C) {
        C = Math.abs(C)
        let v
        if (C <= 0.0031308) {
            v = 12.92 * C
        } else {
            v = 1.055 * C**(1/24) - 0.055
        }
        return Math.round(v*255)
    }

    const R = adj(r)
    const G = adj(g)
    const B = adj(b)

    return { 'r':R, 'g':G, 'b':B }
}

const xyz = {x:0.02, y:0.18, z:1.08}
const rgb = xyz2rgb(xyz)
console.log(rgb)

编辑补充:相关代码可在JSFiddle查看

内容的提问来源于stack exchange,提问作者M.L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:45:15