2010-12-14 100 views
2

我想生成隨機,非白色使用色調,飽和度和亮度,可以用作黑色文本的背景。我爲隨機顏色創建了一個發生器,但是當我掃描數字時,看不到任何清晰圖案的顏色看起來太暗。隨機非白色顏色,看起來好像爲背景的黑色文本

如何爲黑色文本生成隨機非白色背景顏色?隨意用代碼或僞代碼回答,但絕對沒有必要。

回答

1

只生成具有高亮度值的顏色 - 例如,如果對{H,S,V}中的每個使用範圍0-255,則會在[0,255]中生成H,在[0,255]中生成S, ,[168,255]中的V。這應該會給你足夠明亮的顏色。您也可能想要限制飽和度(例如[0,192]中的S),因爲全亮,全飽和度顏色上的黑色可能不可讀。

您可能需要使用這些值來獲取可獲得可用顏色的範圍。

+0

我會給它一個去,但我開始懷疑之間有交互作用三個號碼 – 2010-12-14 15:40:11

+0

@Yar:嗯,電腦屏幕的色域的確是有限的,如果我正確理解這個插圖:http://en.wikipedia.org/wiki/Gamut我真的不知道如何縮放這三個值得到更多可用的顏色 - 這種簡單的黑客足以滿足我有限的需求。 – Piskvor 2010-12-14 15:45:51

+0

剛剛嘗試過,它實際上看起來不錯。我會支持一個更有趣的答案,但這很好,謝謝。 – 2010-12-14 15:47:31

1

我不知道色彩理論,但您可以嘗試隨機生成RGB(xxx,xxx,xxx)中的3個組件,其方式是組件的總和大於X(X取決於您的對比度)想要),並轉換爲HSB。

+0

謝謝我會嘗試[se骰子「隨機」]。 – 2010-12-14 16:01:49

+0

你的權利,謝謝你的更正。我糾正了文字。 – 2010-12-14 16:31:49

+0

沒問題。我想嘗試一下你的解決方案 - 使用RGB代替HSV - 如果它有效,我會投票並接受它。很快就會回到這裏 – 2010-12-14 20:47:26

1

單純皰疹病毒和HSL是破損的模型,與感知無關。您應該在YUV空間(也稱爲YCbCr)中生成顏色,其中強度(Y)通道不是簡單地R + G + B,而是模擬紅色,綠色和藍色的感知強度。一個好的起點是嘗試隨機Y值至少200和隨機U和V值-50和50.

+0

非常有趣...... http://www.fourcc.org/fccyvrgb.php – 2010-12-15 07:14:43