tags:

views:

62

answers:

1

How do I convert a HEX color value to CMYK equivalent in php?

I want to write a function that does that. But Ive got no clue how to convert hex to CMYK

eg: 
<?php

hex2CMYK('#000000'); //result: array('0.0','0.0','0.0','0.0');

?>
+1  A: 
function hex2rgb($hex) {
   $color = str_replace('#','',$hex);
   $rgb = array('r' => hexdec(substr($color,0,2)),
                'g' => hexdec(substr($color,2,2)),
                'b' => hexdec(substr($color,4,2)));
   return $rgb;
}

function rgb2cmyk($var1,$g=0,$b=0) {
   if (is_array($var1)) {
      $r = $var1['r'];
      $g = $var1['g'];
      $b = $var1['b'];
   } else {
      $r=$var1;
   }
   $cyan    = 255 - $r;
   $magenta = 255 - $g;
   $yellow  = 255 - $b;
   $black  = min($cyan, $magenta, $yellow);
   $cyan    = @(($cyan    - $black) / (255 - $black)) * 255;
   $magenta = @(($magenta - $black) / (255 - $black)) * 255;
   $yellow  = @(($yellow  - $black) / (255 - $black)) * 255;
   return array('c' => $cyan / 255,
                'm' => $magenta / 255,
                'y' => $yellow / 255,
                'k' => $black / 255);
}

$color=rgb2cmyk(hex2rgb('#FF0000'));
Mark Baker
You should fix your quotation.
Gumbo
@Gumbo - thanks for pointing that out
Mark Baker