5

適切な背景色と上に表示されるテキストの色を計算する理由を探しています。明らかに、読みやすさとアクセシビリティを考慮する必要があります。

配列から2つの色を選択する必要があります。色は、16進表現で格納されます。

#CC9966
#996633
#FFCC99
#CCCC99
#000000
#333333
#666633
#663333
#CC9933
#FFCCCC

GD / imageMagickのようなPHPライブラリを使用できますか?

任意の提案(私はPHPを使用していることに注意してください)

4

3 に答える 3

2

まず、Particletreeのこの優れたブログ投稿をご覧になることをお勧めします。

そうは言っても、彼らの smarty_modifier_contrast() 関数を使用して、特定のニーズに対応するために少し変更します。

function color_contrast($bgcolor, $color1, $color2, $color3, ...)
{
    return (hexdec($bgcolor) > 0xffffff / 2) ? min(array_slice(func_get_args(), 1)) : max(array_slice(func_get_args(), 1));
}

したがって、背景に任意のランダムな色を使用する必要があり ( !をドロップすることを忘れないでください#)、他のすべての色を配列に渡す必要があります。この場合、可変数の引数を使用しましたが、変更できます単一の色の配列を受け入れるようにします。次に、に応じて最も暗い色または最も明るい色を自動的に選択し、$bgcolor読みやすい十分なコントラストを提供します。

function color_contrast($bgcolor, $colors = array())
{
    return (hexdec($bgcolor) > 0xffffff / 2) ? min($colors) : max($colors);
}

を選択するには、前に述べたように、彩度輝度$bgcolorなどのこのタスクを支援する 2 番目の関数を使用してランダムに行うことができます。これは、実際に探しているものに依存します。

于 2010-04-13T02:04:28.463 に答える
1

通常、ランダムな色を選択することは、読みやすさとアクセシビリティの点で良い考えではありません。そのため、デザインを再考することをお勧めします。または、少なくともテキストを黒または白のみに制限します。

それができない場合は、色間の視覚的な違いにほぼ等しい 2 つの色間の「距離」を計算することをお勧めします。したがって、読みやすさにも多少関係します。

を使用しdistance = abs(2*(r1-r2) + 3*(g1-g2) + (b1-b2))、距離が十分でない組み合わせを除外します。これにより、明るい背景に暗い色が表示されるか、暗い背景に明るい色が表示されるようになります。これは、読みやすさの前提条件であり、色盲の人にも 2 つのはっきりと異なる色合いが見えるようになります。色成分は、知覚される明るさ全体に異なる影響を与えるため、異なる重み付けがされています。

于 2010-04-13T00:39:14.393 に答える
0

各色を RGB コンポーネントに分割し、それぞれに 0x80 (または他の同様の値、おそらく 0x66) を追加し、0xff でマスクして、テーブルで最も近い値を見つけます。

于 2010-04-13T00:05:44.523 に答える