【问题标题】:PHP - How to convert RGB color to CIE 1931 color specificationPHP - 如何将 RGB 颜色转换为 CIE 1931 颜色规范
【发布时间】:2013-11-29 10:19:10
【问题描述】:

我正在创建自己的基于 PHP 的应用程序,我想将 RGB 颜色更改为 CIE 1931 的 xy 格式。

如何将我的 RGB 颜色规格转换为 CIE 颜色空间?

【问题讨论】:

    标签: javascript php color-scheme philips-hue


    【解决方案1】:

    先用变换矩阵计算X、Y、Z,然后对结果进行归一化

    X = 0.4124*R + 0.3576*G + 0.1805*B
    Y = 0.2126*R + 0.7152*G + 0.0722*B
    Z = 0.0193*R + 0.1192*G + 0.9505*B
    

    标准化:

    x = X / (X + Y + Z)
    y = Y / (X + Y + Z)
    

    【讨论】:

    • 太棒了!谢谢老兄:)
    • 这是否假定 RGB 是浮点数或整数。如果它是一个整数,你会通过除以 255 来归一化吗?
    • 我认为它应该在 0 和 1.0 之间 - 除以 256 来标准化它
    【解决方案2】:

    这是我的 Javascript 版本。它应该对你有足够的帮助;)

     /**
     * Convert RGB to XY
     */
    function RGBtoXY(red,green,blue){
        red = (red > 0.04045) ? Math.pow((red + 0.055) / (1.0 + 0.055), 2.4) : (red / 12.92);
        green = (green > 0.04045) ? Math.pow((green + 0.055) / (1.0 + 0.055), 2.4) : (green / 12.92);
        blue = (blue > 0.04045) ? Math.pow((blue + 0.055) / (1.0 + 0.055), 2.4) : (blue / 12.92);
        var X = red * 0.664511 + green * 0.154324 + blue * 0.162028;
        var Y = red * 0.283881 + green * 0.668433 + blue * 0.047685;
        var Z = red * 0.000088 + green * 0.072310 + blue * 0.986039;
        var fx = X / (X + Y + Z);
        var fy = Y / (X + Y + Z);
        return [fx.toPrecision(4),fy.toPrecision(4)];
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 1970-01-01
      • 2014-03-01
      • 2014-05-02
      • 2015-08-22
      • 1970-01-01
      • 2020-01-16
      • 2019-02-08
      • 2018-06-16
      相关资源
      最近更新 更多