1

CMYK 値を RGBA 値に変換する必要がありますが、これが機能するアルゴリズムをまだ見つけていません。

私はすでに次の方法で RGBA から CMYK に変換しています。

  • RGBA を RGB に変換
  • RGB を CMYK に変換する

以下は、上記の 2 つの箇条書きに使用しているアルゴリズムです。

RGBA から RGB

return substr($rgba, 0, -2);

... 何?それは何も悪いことではありません!:D

RGB から CMYK

$c = 255 - $r;
$m = 255 - $g;
$y = 255 - $b;

$b = min($c, $m, $y);

$c = round(($c - $b) / (255 - $b));
$m = round(($m - $b) / (255 - $b));
$y = round(($y - $b) / (255 - $b));
$k = round($b / 255);

return sprintf('%s,%s,%s,%s', $c, $m, $y, $k);

帰りは…

CMYK から RGB

$r = 255 - round(2.55 * ($c + $k));
$g = 255 - round(2.55 * ($m + $k));
$b = 255 - round(2.55 * ($y + $k));

if ($r < 0) $r = 0;
if ($g < 0) $g = 0;
if ($b < 0) $b = 0;

return sprintf('%s,%s,%s', $r, $g, $b);

RGB から RGBA

$min = min(array($r, $g, $b));
$a = (255 - $min) / 255;

$r = round(($r - $min) / $a);
$g = round(($g - $min) / $a);
$b = round(($b - $min) / $a);

$a = round($a);

return sprintf('%s,%s,%s,%s', $r, $g, $b, $a);

ここで、に、つまり上記の前の 2 つを実行すると、CMYK を RGBA に変換した出力が得られます。

cmyk168,107,107,108 cmyk

RGBA13,0,0,1 RGBA

明らかに、これを逆にすることは、CMYK を RGBA に変換する最良の方法ではありません。おそらく私のアルゴリズムは完全に間違っていますか?値ではなくパーセンテージを期待している可能性がありますか? カラープロファイルは私の得意分野ではないので、完全にはわかりません。

CMYK 値を RGBA に正しく変換するのに役立つ (任意の言語で - 翻訳で​​きる) アルゴリズムはありますか?

4

0 に答える 0