# see http://adaptiveview.com/cw/doc5a.html
# red = 255 - minimum(255,((cyan/255) * (255 - black) + black))
# green = 255 - minimum(255,((magenta/255) * (255 - black) + black))
# blue = 255 - minimum(255,((yellow/255) * (255 - black) + black))
use strict;
use warnings;
# some test data
my @cmyk = qw(0 128 255 127 );
# convert
my @rgb = cmyk2rgb(@cmyk);
# result
foreach (0..2){
print "$_ $rgb[$_]\n";
}
sub cmyk2rgb {
my (@cmyk) = @_;
my $bk = $cmyk[3];
my $wh = 255 - $bk;
my @rgb=();
my $tmp=0;
for (0..2){
$tmp = ( ($cmyk[$_]/255) * $wh ) + $bk;
$tmp = ($tmp > 255) ? 255 : $tmp;
$rgb[$_] = 255 - int ($tmp + 0.5);
}
return @rgb;
}