2011-11-03 11 views
8

मैं किसी दिए गए पृष्ठभूमि रंग से सर्वश्रेष्ठ टेक्स्ट रंग (आंखों के लिए सबसे अधिक प्रसन्न) प्राप्त करने के लिए एक एल्गोरिदम खोज रहा हूं।सर्वश्रेष्ठ पाठ रंग प्राप्त करने के लिए एल्गोरिदम

कोई विचार?

+6

डाउनवोट नहीं जा रहा है क्योंकि यह दिलचस्प और उपयोगी है, लेकिन हो सकता है कि आप "सर्वश्रेष्ठ रंग" को हर किसी के लिए थोड़ा और स्पष्ट रूप से समझाएं। – Widor

+0

Widor एक बहुत अच्छा मुद्दा मिला है। कृपया "सर्वश्रेष्ठ रंग" (आंखों के लिए सबसे अधिक प्रसन्नता, उच्चतम विपरीत, रंग अंधापन अनुकूल, जो भी हो) द्वारा विस्तारित करने के लिए पुन: प्रयास करें। – NPE

+0

"आंखों के लिए सबसे अधिक प्रसन्न" – user954469

उत्तर

12

"सर्वश्रेष्ठ रंग" बहुत ही व्यक्तिपरक और संदर्भ निर्भर है। यह इस बात पर निर्भर करता है कि आप क्या प्रभाव चाहते हैं: यदि आप उच्चतम विपरीत संभव चाहते हैं, तो पूरक रंगों की तलाश करें (जो आपको हरे, पीले रंग के नीले आदि पर लाल रंग देगी)। यदि आप "समान" रंग चाहते हैं, तो समान सामंजस्य की तलाश करें। यदि आप केवल काले और सफेद के बीच फैसला करना चाहते हैं, तो चमक मापें (हम्सटरजिन ने इसके लिए एक बहुत अच्छा सूत्र पोस्ट किया है)।

जहां भी आप जाते हैं, एचएसवी रंग मॉडल कुंजी है।

पूरक या समान रंग प्राप्त करना तुच्छ है (उदा। hue_text = (hue_bg + 180) % 360 या hue_text = (hue_bg + 30) % 360)।

आप बेहतर विपरीत के लिए मूल्य (हल्कापन) और संतृप्ति के साथ भी प्रयोग कर सकते हैं। उदाहरण के लिए, v_text = 1 - v_bg आपको उज्ज्वल पृष्ठभूमि पर अंधेरा पाठ दे सकता है और इसके विपरीत (मध्य स्वर के लिए देखें!)। इसे रैखिक होने की आवश्यकता नहीं है - आप एक चरण समारोह के लिए भी जा सकते हैं जैसे: if v_bg < 0.5 then v_text = 1 else v_text = 0, या if s_bg < 0.5 then s_text = 1 else s_text = 0 (पीले पर जीवंत)।

यह कुछ संकेत है। एक शब्द में: यह निर्भर करता है!

रंग सिद्धांत और रंग सामंजस्य के लिए Google। कुछ लिंक:

http://www.tigercolor.com/color-lab/color-theory/color-harmonies.htm

http://www.colormatters.com/color-and-design/basic-color-theory

6

हर किसी के लिए कोई सबसे अच्छा है।

यदि आप सुनिश्चित पाठ आसानी से पढ़ा जा सके बनाने की जरूरत है कहते हैं, निम्नलिखित सरल सूत्र मेरे लिए अच्छी तरह से काम:

textColor = brightness(backColor) > 0.5 ? black : white; 

जहां चमक

brightness(R,G,B) = 0.299*R + 0.587*G + 0.114*B 

के रूप में परिभाषित किया गया है (कई परिभाषाओं देखते हैं "चमक" के लिए, मैंने इसका इस्तेमाल किया लेकिन मुझे लगता है कि कोई भी काम करेगा)।

+0

मैं वापस देख रहा था और याद किया कि किसी ने बेहतर जवाब दिया है, और यहां आप हैं। :-) –

संबंधित मुद्दे