> 16) & 0xFF; $sG = ($rgb >> 8) & 0xFF; $sB = $rgb & 0xFF; return self::lightnessFromRgb($sR, $sG, $sB); } /** * Calculate lightess from rgb values * * @param int $r Red * @param int $g Green * @param int $b Blue * * @return float * * @since 1.0.0 */ public static function lightnessFromRgb(int $r, int $g, int $b) : float { $vR = $r / 255.0; $vG = $g / 255.0; $vB = $b / 255.0; $lR = $vR <= 0.04045 ? $vR / 12.92 : \pow((($vR + 0.055) / 1.055), 2.4); $lG = $vG <= 0.04045 ? $vG / 12.92 : \pow((($vG + 0.055) / 1.055), 2.4); $lB = $vB <= 0.04045 ? $vB / 12.92 : \pow((($vB + 0.055) / 1.055), 2.4); $y = 0.2126 * $lR + 0.7152 * $lG + 0.0722 * $lB; $lStar = $y <= 216.0 / 24389.0 ? $y * 24389.0 / 27.0 : \pow($y, (1 / 3)) * 116.0 - 16.0; return $lStar / 100.0; } }