public static function rgbToCmyk(Space\Rgb $rgb)
{
$K = 1;
// Calculate CMY.
$cyan = 1 - $rgb->getRed() / 255;
$magenta = 1 - $rgb->getGreen() / 255;
$yellow = 1 - $rgb->getBlue() / 255;
// Calculate K.
if ($cyan < $K) {
$K = $cyan;
}
if ($magenta < $K) {
$K = $magenta;
}
if ($yellow < $K) {
$K = $yellow;
}
if ($K == 1) {
$cyan = 0;
$magenta = 0;
$yellow = 0;
} else {
$cyan = round(($cyan - $K) / (1 - $K) * 100);
$magenta = round(($magenta - $K) / (1 - $K) * 100);
$yellow = round(($yellow - $K) / (1 - $K) * 100);
}
$black = round($K * 100);
return new Space\Cmyk($cyan, $magenta, $yellow, $black);
}