1) $opacity = 1.0; $output = 'rgba('.implode(",",$rgb).','.$opacity.')'; } else { $output = 'rgb('.implode(",",$rgb).')'; } //Return rgb(a) color string return $output; } function hex2rgb( $colour ) { if ( $colour[0] == '#' ) { $colour = substr( $colour, 1 ); } if ( strlen( $colour ) == 6 ) { list( $r, $g, $b ) = array( $colour[0] . $colour[1], $colour[2] . $colour[3], $colour[4] . $colour[5] ); } elseif ( strlen( $colour ) == 3 ) { list( $r, $g, $b ) = array( $colour[0] . $colour[0], $colour[1] . $colour[1], $colour[2] . $colour[2] ); } else { return false; } $r = hexdec( $r ); $g = hexdec( $g ); $b = hexdec( $b ); return array( 'red' => $r, 'green' => $g, 'blue' => $b ); } function rgbToHsl( $r, $g, $b ) { $oldR = $r; $oldG = $g; $oldB = $b; $r /= 255; $g /= 255; $b /= 255; $max = max( $r, $g, $b ); $min = min( $r, $g, $b ); $h; $s; $l = ( $max + $min ) / 2; $d = $max - $min; if( $d == 0 ){ $h = $s = 0; // achromatic } else { $s = $d / ( 1 - abs( 2 * $l - 1 ) ); switch( $max ){ case $r: $h = 60 * fmod( ( ( $g - $b ) / $d ), 6 ); if ($b > $g) { $h += 360; } break; case $g: $h = 60 * ( ( $b - $r ) / $d + 2 ); break; case $b: $h = 60 * ( ( $r - $g ) / $d + 4 ); break; } } return array( round( $h, 2 ), round( $s, 2 ), round( $l, 2 ) ); } function hslToRgb( $h, $s, $l ){ $r = ""; $g = ""; $b = ""; $c = ( 1 - abs( 2 * $l - 1 ) ) * $s; $x = $c * ( 1 - abs( fmod( ( $h / 60 ), 2 ) - 1 ) ); $m = $l - ( $c / 2 ); if ( $h < 60 ) { $r = $c; $g = $x; $b = 0; } else if ( $h < 120 ) { $r = $x; $g = $c; $b = 0; } else if ( $h < 180 ) { $r = 0; $g = $c; $b = $x; } else if ( $h < 240 ) { $r = 0; $g = $x; $b = $c; } else if ( $h < 300 ) { $r = $x; $g = 0; $b = $c; } else { $r = $c; $g = 0; $b = $x; } $r = ( $r + $m ) * 255; $g = ( $g + $m ) * 255; $b = ( $b + $m ) * 255; return array( floor( $r ), floor( $g ), floor( $b ) ); } /* * Som more example code - this needs to be deletet if we don't need it in * the future */ function HTMLToRGB($htmlCode) { if($htmlCode[0] == '#') $htmlCode = substr($htmlCode, 1); if (strlen($htmlCode) == 3) { $htmlCode = $htmlCode[0] . $htmlCode[0] . $htmlCode[1] . $htmlCode[1] . $htmlCode[2] . $htmlCode[2]; } $r = hexdec($htmlCode[0] . $htmlCode[1]); $g = hexdec($htmlCode[2] . $htmlCode[3]); $b = hexdec($htmlCode[4] . $htmlCode[5]); return $b + ($g << 0x8) + ($r << 0x10); } function RGBToHTML($RGB) { $r = 0xFF & ($RGB >> 0x10); $g = 0xFF & ($RGB >> 0x8); $b = 0xFF & $RGB; $r = dechex($r); $g = dechex($g); $b = dechex($b); return "#" . str_pad($r, 2, "0", STR_PAD_LEFT) . str_pad($g, 2, "0", STR_PAD_LEFT) . str_pad($b, 2, "0", STR_PAD_LEFT); } function ChangeLuminosity($RGB, $LuminosityPercent) { $HSL = RGBToHSL($RGB); $NewHSL = (int)(((float)$LuminosityPercent / 100) * 255) + (0xFFFF00 & $HSL); return HSLToRGB($NewHSL); } function RGBToHSL($RGB) { $r = 0xFF & ($RGB >> 0x10); $g = 0xFF & ($RGB >> 0x8); $b = 0xFF & $RGB; $r = ((float)$r) / 255.0; $g = ((float)$g) / 255.0; $b = ((float)$b) / 255.0; $maxC = max($r, $g, $b); $minC = min($r, $g, $b); $l = ($maxC + $minC) / 2.0; if($maxC == $minC) { $s = 0; $h = 0; } else { if($l < .5) { $s = ($maxC - $minC) / ($maxC + $minC); } else { $s = ($maxC - $minC) / (2.0 - $maxC - $minC); } if($r == $maxC) $h = ($g - $b) / ($maxC - $minC); if($g == $maxC) $h = 2.0 + ($b - $r) / ($maxC - $minC); if($b == $maxC) $h = 4.0 + ($r - $g) / ($maxC - $minC); $h = $h / 6.0; } $h = (int)round(255.0 * $h); $s = (int)round(255.0 * $s); $l = (int)round(255.0 * $l); $HSL = $l + ($s << 0x8) + ($h << 0x10); return $HSL; } function HSLToRGB($HSL) { $h = 0xFF & ($HSL >> 0x10); $s = 0xFF & ($HSL >> 0x8); $l = 0xFF & $HSL; $h = ((float)$h) / 255.0; $s = ((float)$s) / 255.0; $l = ((float)$l) / 255.0; if($s == 0) { $r = $l; $g = $l; $b = $l; } else { if($l < .5) { $t2 = $l * (1.0 + $s); } else { $t2 = ($l + $s) - ($l * $s); } $t1 = 2.0 * $l - $t2; $rt3 = $h + 1.0/3.0; $gt3 = $h; $bt3 = $h - 1.0/3.0; if($rt3 < 0) $rt3 += 1.0; if($rt3 > 1) $rt3 -= 1.0; if($gt3 < 0) $gt3 += 1.0; if($gt3 > 1) $gt3 -= 1.0; if($bt3 < 0) $bt3 += 1.0; if($bt3 > 1) $bt3 -= 1.0; if(6.0 * $rt3 < 1) $r = $t1 + ($t2 - $t1) * 6.0 * $rt3; elseif(2.0 * $rt3 < 1) $r = $t2; elseif(3.0 * $rt3 < 2) $r = $t1 + ($t2 - $t1) * ((2.0/3.0) - $rt3) * 6.0; else $r = $t1; if(6.0 * $gt3 < 1) $g = $t1 + ($t2 - $t1) * 6.0 * $gt3; elseif(2.0 * $gt3 < 1) $g = $t2; elseif(3.0 * $gt3 < 2) $g = $t1 + ($t2 - $t1) * ((2.0/3.0) - $gt3) * 6.0; else $g = $t1; if(6.0 * $bt3 < 1) $b = $t1 + ($t2 - $t1) * 6.0 * $bt3; elseif(2.0 * $bt3 < 1) $b = $t2; elseif(3.0 * $bt3 < 2) $b = $t1 + ($t2 - $t1) * ((2.0/3.0) - $bt3) * 6.0; else $b = $t1; } $r = (int)round(255.0 * $r); $g = (int)round(255.0 * $g); $b = (int)round(255.0 * $b); $RGB = $b + ($g << 0x8) + ($r << 0x10); return $RGB; } }