Pop\Color\Convert::rgbToLab PHP Method

rgbToLab() public static method

Method to convert an integer RGB object to a LAB object
public static rgbToLab ( Rgb $rgb ) : Lab
$rgb Pop\Color\Space\Rgb
return Pop\Color\Space\Lab
    public static function rgbToLab(Space\Rgb $rgb)
    {
        $r = $rgb->getRed() / 255;
        $g = $rgb->getGreen() / 255;
        $b = $rgb->getBlue() / 255;
        if ($r > 0.04045) {
            $r = pow(($r + 0.055) / 1.055, 2.4);
        } else {
            $r = $r / 12.92;
        }
        if ($g > 0.04045) {
            $g = pow(($g + 0.055) / 1.055, 2.4);
        } else {
            $g = $g / 12.92;
        }
        if ($b > 0.04045) {
            $b = pow(($b + 0.055) / 1.055, 2.4);
        } else {
            $b = $b / 12.92;
        }
        $r = $r * 100;
        $g = $g * 100;
        $b = $b * 100;
        $x = ($r * 0.4124 + $g * 0.3576 + $b * 0.1805) / 95.047;
        $y = ($r * 0.2126 + $g * 0.7151999999999999 + $b * 0.0722) / 100.0;
        $z = ($r * 0.0193 + $g * 0.1192 + $b * 0.9505) / 108.883;
        if ($x > 0.008855999999999999) {
            $x = pow($x, 1 / 3);
        } else {
            $x = 7.787 * $x + 16 / 116;
        }
        if ($y > 0.008855999999999999) {
            $y = pow($y, 1 / 3);
        } else {
            $y = 7.787 * $y + 16 / 116;
        }
        if ($z > 0.008855999999999999) {
            $z = pow($z, 1 / 3);
        } else {
            $z = 7.787 * $z + 16 / 116;
        }
        $l = 116 * $y - 16;
        $a = 500 * ($x - $y);
        $b = 200 * ($y - $z);
        return new Space\Lab($l, $a, $b);
    }