$end[0]) { $value = $end[0]; } $start = $stop; $stop = $end; } $diff[0] = $stop[0] - $start[0]; $diff[1] = $stop[1] - $start[1]; $diff[2] = $stop[2] - $start[2]; $diff[3] = $stop[3] - $start[3]; $gradient['r'] = $start[1] + ($value - $start[0]) / ($diff[0]) * $diff[1]; $gradient['g'] = $start[2] + ($value - $start[0]) / ($diff[0]) * $diff[2]; $gradient['b'] = $start[3] + ($value - $start[0]) / ($diff[0]) * $diff[3]; foreach ($gradient as &$color) { if ($color > 255) { $color = 255; } elseif ($color < 0) { $color = 0; } else { $color = (int) $color; } } return $gradient; } /** * Convert int to rgb * * @param int $rgbInt Value to convert * * @return array * * @since 1.0.0 */ public static function intToRgb(int $rgbInt) : array { $rgb = ['r' => 0, 'g' => 0, 'b' => 0]; $rgb['b'] = $rgbInt & 255; $rgb['g'] = ($rgbInt >> 8) & 255; $rgb['r'] = ($rgbInt >> 16) & 255; return $rgb; } }