RGBをCMYKに変換する

結論から言うと失敗作というか、最小値と最大とのみを考慮して作られた式です。
はっきりいって使い物になりませんが、フリーソフトではつかっちゃっているようです。
動作確認用に作ったものなので、細かいエラーチェックは抜きです。

#===============================================================================
# RGB => CMYK(cmyが同じ値の場合kに割り振る)
#-------------------------------------------------------------------------------
sub rgb2cmyk {

	my $rgb = shift;
	$rgb =~ /^#?(..)(..)(..)$/;
	my %color = (
		'r' => hex( $1 ),
		'g' => hex( $2 ),
		'b' => hex( $3 ),
	);

	$color{'c'} = 1 - ( $color{'r'} / 255 );
	$color{'m'} = 1 - ( $color{'g'} / 255 );
	$color{'y'} = 1 - ( $color{'b'} / 255 );
	$color{'k'} = 0;
	if(
		   $color{'c'} == $color{'m'}
		|| $color{'m'} == $color{'k'}
	){
		$color{'k'} = $color{'c'};
		$color{'c'} = $color{'m'} = $color{'y'} = 0;
	}

	return %color;

}

結局、色を絞って変換テーブルを自作することになりましたけどね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です