รหัสด้านล่างสามารถใช้เพื่อแปลงค่าฐานสิบหกเป็นค่า HSL -
function hex_To_Hsl($hex) { $hex_val = array($hex_val[0].$hex_val[1], $hex_val[2].$hex_val[3], $hex_val[4].$hex_val[5]); $rgb_val = array_map(function($part) { return hexdec($part) / 255; }, $hex_val); $max_val = max($rgb_val); $min_val = min($rgb_val); $l = ($max_val + $min_val) / 2; if ($max_val == $min_val) { $h = $s = 0; } else { $diff = $max_val - $min_val; $s = $l > 0.5 ? $diff / (2 - $max_val - $min_val) : $diff / ($max_val + $min_val); switch($max_val) { case $rgb_val[0]: $h = ($rgb_val[1] - $rgb_val[2]) / $diff + ($rgb_val[1] < $rgb_val[2] ? 6 : 0); break; case $rgb_val[1]: $h = ($rgb_val[2] - $rgb_val[0]) / $diff + 2; break; case $rgb_val[2]: $h = ($rgb_val[0] - $rgb_val[1]) / $diff + 4; break; } $h /= 6; } return array($h, $s, $l); }