1

私の Web アプリには、チャットルームがあります。各ユーザーの名前をすべて黒にするのではなく、異なる色にしたいと考えています。これを達成するための最良の方法は何ですか?各ユーザーがアプリにサインアップするときに RGB/HEX コードを保存し、その文字列をデータベース内のレコードの一部としてフィールドとして配置する必要がありますか?

4

4 に答える 4

6

色の固定リストを用意し、ユーザーがそこから選択して、データベースなどにインデックスを保存する1 = redようにし2 = greenます。これにより、各色の色合いを変更して、サイトのデザインに合わせて進化させることができます。

たとえば、「赤」をロゴと同じ赤に一致させたい場合があります。これを単なる「赤」ではなく RGB 値としてデータベースに保存すると、変更がはるかに難しくなります。

于 2009-05-20T11:28:58.710 に答える
2

目標がチャット ルーム内でユーザーを一目で識別できるようにすることである場合、それはユーザー ベースの規模によって異なります。チャット ルームの平均サイズがたとえば 10 であるのに、ユーザー ベースが数千に及ぶ場合、それぞれに固有の色を使用してもうまくいきません。最終的には、同じチャット ルームに同じ色のわずかに異なる色合いが表示されることになります。

その場合、露骨に異なる色の短いリストを保持し、それらを 1 つのチャット ルーム内に割り当てます。

于 2009-05-20T12:24:12.827 に答える
1

あなたのスキームの代わりとして:

irssi のように (そして他の人も) 行うことができ、スクリーン ニックのハッシュ (選択した関数を使用) に基づいて色を割り当てるだけです。ニックネームの長さと色は、このシステムでは相関関係がありません。そのため、異なる文字、異なるスクリーン名、異なる色の組み合わせは、物事を区別可能にするだけでなく、セッションごとに一貫性を持たせるのに十分なはずです. このスキームでは、キャッシュする必要があるのはセッション内の各ユーザー名の色だけなので、無数の md5 呼び出しを行う必要はありません。これは、ユーザーごとに異なる色を保証するものではありません (それどころではありません)。おそらく、その仕様で達成しようとしている目的について考える必要があります。

于 2009-05-20T14:10:12.410 に答える
0

特に色相値を使用して、HSV/HSL から色を生成します。次にRGBに変換します。

HSV/HSL の詳細については、こちらの回答を参照してください。

おそらく、毎回できるだけ異なる色が必要になるでしょう。

これは、色範囲のキューを保持することで実行できます。

キューが空の場合、hue 0 を返し、ペア (0, 360) をキューに挿入します。次回カラーが必要な場合は、キュー (0, 360) から要素をポップし、それらの値の中間点である 180 を返します。次に、(0, 180) と (180, 360) をキューにプッシュします。

次回カラーが必要な場合は、キュー (0, 180) から要素をポップし、それらの値の中間点である 90 を返します。次に、(0, 90) と (90, 180) をキューにプッシュします。

次に色が必要な場合は、キューから要素 (180, 360) をポップし、それらの値の中間点である 270 を返します。次に、(180, 270) と (270, 360) をキューにプッシュします。

このプロセスを続行...

ユーザーごとに可能な限り広い識別可能な色が自動的に設定されます。

于 2009-05-20T11:28:42.317 に答える