ユーザーが一部のセクションの背景色をカスタマイズできるが、フォントの色はカスタマイズできない(オプションの数を最小限に抑える)システム(たとえばWebサイト)がある場合、プログラムで「明るい」か「明るい」かを判断する方法はありますか。暗い」フォントの色が必要ですか?
アルゴリズムはあると思いますが、色や明るさなどを自分で理解するのに十分な知識がありません。
同様の問題が発生しました。カラースケール/ヒートマップにテキストラベルを表示するために、対照的なフォントの色を選択する良い方法を見つけなければなりませんでした。それは普遍的な方法である必要があり、生成された色は「見栄えが良い」必要がありました。つまり、補色を単純に生成することは適切な解決策ではありませんでした。
長時間のテストとこの問題の解決を試みた結果、「暗い」色には白いフォントを選択し、「明るい」色には黒いフォントを選択するのが最善の解決策であることがわかりました。
これが私がC#で使用している関数の例です:
Color ContrastColor(Color color)
{
int d = 0;
// Counting the perceptive luminance - human eye favors green color...
double luminance = ( 0.299 * color.R + 0.587 * color.G + 0.114 * color.B)/255;
if (luminance > 0.5)
d = 0; // bright colors - black font
else
d = 255; // dark colors - white font
return Color.FromArgb(d, d, d);
}
これは、さまざまなカラースケール(レインボー、グレースケール、熱、氷など)でテストされており、私が見つけた唯一の「普遍的な」方法です。
編集
カウントの式a
を「知覚輝度」に変更しました-本当に良く見えます!すでに私のソフトウェアに実装されており、見栄えがします。
Edit 2 @WebSeedは、このアルゴリズムの優れた実用例を提供しました:http://codepen.io/WebSeed/full/pvgqEq/
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加