我試圖創建一個小的腳本,其產生兩種顏色,如果一個作爲背景,一個作爲字體顏色,將根據以下準則是可讀:優化彩色圖像生成可讀性
http://www.hgrebdes.com/colour/spectrum/colourvisibility.html
Web可訪問準則從W3C(和不足)
顏色可見性可以根據下列 算法來確定:
(這是所提出的算法,仍然是開放的改變。)
兩種顏色提供良好的顏色可見度,如果亮度差 和兩個顏色之間的色差是大於設定 範圍更大。 ((紅色值X 299)+(綠色值X 587)+(藍色值X 114))/ 1000注意:這個 算法取自一個公式轉換公式RGB值爲YIQ 值。該亮度值爲 顏色提供了可感知的亮度。 (最大(紅色) 值1,紅色值2) - 最小值(紅色值1,紅色值2))+(最大值 (綠色值1,綠色值2) - 最小值(綠色值1,綠色值 2))+(最大(藍色值1,藍值2) - 最小(藍色值1, 藍值2))
範圍爲顏色亮度差別是125顏色 的區別是500.
我的代碼是:
do {
$bg[0] = rand(0, 255);
$bg[1] = rand(0, 255);
$bg[2] = rand(0, 255);
$bg[3] = ($bg[0] + $bg[1] + $bg[2])/1000;
$txt[0] = rand(0, 255);
$txt[1] = rand(0, 255);
$txt[2] = rand(0, 255);
$txt[3] = ($txt[0] + $txt[1] + $txt[2])/1000;
//Brightness Difference = Brightness of color 1 - Brightness of color 2
$brightnessDifference = abs($bg[3] - $txt[3]);
//Color difference = Maximum (Red1, Red2) - Minimum (Red1, Red2) etc for Blue and Green
$colorDifference = max($bg[0], $txt[0]) - min($bg[0], $txt[0]) + max($bg[1], $txt[1]) - min($bg[1], $txt[1]) + max($bg[2], $txt[2]) - min($bg[2], $txt[2]);
} while($brightnessDifference < 125 || $colorDifference < 500)
但是執行時間超過了PHP允許的時間......關於如何優化它的建議? :)