質問

私が取り組んでいるこのアルゴリズムの目標は、提供されたいくつかの色から色の進行を出力することです。カラープログレッションとは、2 つの色 (カラー A、カラー B) の間に「フェード」効果を作成し、その間のすべてのカラー値 ((R,G,B) タプル) を保存することを意味します。

たとえば、提供されたものが真っ黒の場合 A = (0,0,0) そして真っ白 B = (255,255,255) 結果の進行は次のようになります。

P = ((0,0,0),(1,1,1),(2,2,2), .... ,(253,253,253),(254,254,254),(255,255,255)

最初は白ですが、徐々に黒に変わっていきます。もちろん、白と黒の場合は非常に簡単です(RGB を 1 段階ずつ増やして 255 回行うだけです)。しかし、この手順を、A = (180,69,1) と B = (233,153,0) のような 2 つの任意の色で実行したい場合はどうすればよいでしょうか??

重要な注意点:16 進数 (またはその他の種類の色表記) を使用する方が簡単に達成できる場合は、それを使用することもできます。タイプを指定するだけです (私が PIL (Python Imaging Library) で作業していることを考慮してください)。それと互換性があるので大丈夫です)

明らかに、それは可能な限り均等な分布でなければならず、進行は均一でなければなりません。

フラクタル ジェネレーター (マンデルブロ集合、必要に応じてググってください) で使用できるように、このアルゴリズムを理解する必要があります。そのため、進行をできるだけソフトに、問題なく行うことが重要です。

前もって感謝します。

役に立ちましたか?

解決

RGB 座標を HSL または HSV に変換し、途中で RGB に戻しながらステップ実行します。

他のヒント

RGB 値を個別に補間するだけです。これを参照してください .

Jim Clay と同じ質問をお勧めしますが、以下から読んでください。 トップ. 。または、関連するウィキペディアを参照してください 補間.

SO というタイトルの質問に対する私の答え 擬似カラーへの範囲値 特定の色のグラデーション (色進行と呼ばれるものの一般名) を生成する 1 つの方法を示しているため、役立つかもしれません。

一般に、各色のコンポーネント間の差またはデルタ値を計算することで、任意の色空間内の任意の 2 つの色の間を補間し、それを必要な中間ステップの数で割って、各コンポーネントの後に適用するコンポーネントごとの分数デルタ量を取得できます。ステップ。

次に、最初の色の各コンポーネントの値から開始して、対応する小数部分の量を繰り返し加算して、各中間ステップの色を決定します。あるいは、そのアプローチに固有の算術誤差は、代わりに以下を追加することで減らすことができます。 (step_number/total_steps) * fractional_delta 開始色の初期色成分値に変換します。

これは@Jim Clayも答えの中で言っていることだと思います。サンプルコードが必要な場合は、コメントにその旨を記載してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top