それを行うライブラリがあるかもしれません。ただし、一般的な原則について簡単に説明しましょう。一般に、次のオプションがあります。
- 定義済みのカラー インデックス。
$coloridx=array(0=>'#FFFFFF',1=>'#FFEE00',...);
- 基本的に 3 つすべての RGB チャネル (R = 赤、G = 緑、B = 青) の反復ベースの適応である線形グラデーションなどの任意のアルゴリズム。
- 両方の組み合わせ。通常、複雑なアルゴリズムの結果をカラー インデックスに入れ、そこから移動します。
考慮事項にアルゴリズムを含める場合は、true
またはがないことを理解する必要がありますfalse
。それはすべて、実装したいものに依存します。n=0..10
緑のバリエーションを にレンダリングし、それ以降のすべてに赤から黒を使用することが理にかなっている場合がありますn>10
。キャップと乗数は、アクセントを設定するのに役立ちます。そういうもの。
線形グラデーションを実装する 1 つの方法は次のとおりです。
function lineargradient($ra,$ga,$ba,$rz,$gz,$bz,$iterationnr) {
$colorindex = array();
for($iterationc=1; $iterationc<=$iterationnr; $iterationc++) {
$iterationdiff = $iterationnr-$iterationc;
$colorindex[] = '#'.
dechex(intval((($ra*$iterationc)+($rz*$iterationdiff))/$iterationnr)).
dechex(intval((($ga*$iterationc)+($gz*$iterationdiff))/$iterationnr)).
dechex(intval((($ba*$iterationc)+($bz*$iterationdiff))/$iterationnr));
}
return $colorindex;
}
$colorindex = lineargradient(
100, 0, 0, // rgb of the start color
0, 255, 255, // rgb of the end color
256 // number of colors in your linear gradient
);
$color = $colorindex[$value];
コードを更新して、コメントにフィードバックする dehex を追加しました。