Skip to content

Instantly share code, notes, and snippets.

@johandouma
Created July 21, 2014 23:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johandouma/b65eb72850246ee0f768 to your computer and use it in GitHub Desktop.
Save johandouma/b65eb72850246ee0f768 to your computer and use it in GitHub Desktop.
Generate colour from string
<?php
function stringToRgb($string, $s = 100, $l = 70){
$h = floor((hexdec(substr(md5($string), 0, 2))/255)*360);
$h /= 360;
$s /= 100;
$l /= 100;
$r = $l;
$g = $l;
$b = $l;
$v = ($l <= 0.5) ? ($l * (1.0 + $s)) : ($l + $s - $l * $s);
if ($v > 0){
$m;
$sv;
$sextant;
$fract;
$vsf;
$mid1;
$mid2;
$m = $l + $l - $v;
$sv = ($v - $m ) / $v;
$h *= 6.0;
$sextant = floor($h);
$fract = $h - $sextant;
$vsf = $v * $sv * $fract;
$mid1 = $m + $vsf;
$mid2 = $v - $vsf;
switch ($sextant)
{
case 0:
$r = $v;
$g = $mid1;
$b = $m;
break;
case 1:
$r = $mid2;
$g = $v;
$b = $m;
break;
case 2:
$r = $m;
$g = $v;
$b = $mid1;
break;
case 3:
$r = $m;
$g = $mid2;
$b = $v;
break;
case 4:
$r = $mid1;
$g = $m;
$b = $v;
break;
case 5:
$r = $v;
$g = $m;
$b = $mid2;
break;
}
}
return "#".dechex(round($r * 255)).dechex(round($g * 255)).dechex(round($b * 255));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment