रंग सम्मिश्रण प्रति चैनल सिर्फ एक रैखिक प्रक्षेप है, है ना? तो गणित बहुत सरल है। यदि आपके पास RGB2 RGB2 से अधिक है, तो प्रभावी दृश्य परिणाम RGB3 होगा:
r3 = r2 + (r1-r2)*a1
g3 = g2 + (g1-g2)*a1
b3 = b2 + (b1-b2)*a1
... जहाँ अल्फा चैनल 0.0 से 1.0 तक है।
Sanity check: यदि अल्फा 0 है, RGB3 RGB2 के समान है? हाँ। यदि अल्फा 1 है, तो RGB3 RGB1 के समान है? हाँ।
यदि आप केवल पृष्ठभूमि रंग और अंतिम रंग को बंद कर देते हैं, तो बड़ी संख्या में RGBA रंग हैं (अनंत, फ्लोटिंग-पॉइंट स्पेस में) जो आवश्यकताओं को पूरा कर सकते हैं। इसलिए आपको या तो बार का रंग चुनना होगा या अस्पष्टता स्तर जो आप चाहते हैं, और दूसरे के मूल्य का पता लगाएं।
अल्फा के आधार पर रंग चुनना
यदि आप RGB3 (अंतिम वांछित रंग), RGB2 (पृष्ठभूमि रंग), और A1 (आप कितना अपारदर्शिता चाहते हैं) जानते हैं, और आप बस RGB1 की तलाश कर रहे हैं, तो हम इस प्रकार समीकरणों को फिर से व्यवस्थित कर सकते हैं:
r1 = (r3 - r2 + r2*a1)/a1
g1 = (g3 - g2 + g2*a1)/a1
b1 = (b3 - b2 + b2*a1)/a1
कुछ रंग संयोजन हैं जो सैद्धांतिक रूप से संभव हैं, लेकिन मानक RGBA श्रेणी को देखते हुए असंभव हैं। उदाहरण के लिए, यदि पृष्ठभूमि शुद्ध काली है, तो वांछित कथित रंग शुद्ध सफेद है, और वांछित अल्फा 1% है, तो आपको इसकी आवश्यकता होगी:
r1 = g1 = b1 = 255/0.01 = 25500
... किसी भी उपलब्ध की तुलना में एक सुपर उज्ज्वल सफेद 100 × उज्जवल।
रंग के आधार पर अल्फा उठा
यदि आप RGB3 (अंतिम वांछित रंग), RGB2 (पृष्ठभूमि रंग), और RGB1 (आपके पास वह रंग है जिसे आप भिन्नता चाहते हैं) जानते हैं, और आप अभी A1 की तलाश कर रहे हैं, तो हम पुनः व्यवस्था कर सकते हैं। इस प्रकार समीकरण:
a1 = (r3-r2) / (r1-r2)
a1 = (g3-g2) / (g1-g2)
a1 = (b3-b2) / (b1-b2)
यदि ये अलग-अलग मान देते हैं, तो आप इसे ठीक से मेल नहीं खा सकते हैं, लेकिन जितना संभव हो उतना करीब पाने के लिए आप अल्फाजों को औसत कर सकते हैं। उदाहरण के लिए, दुनिया में कोई अपारदर्शिता नहीं है जो आपको नीला पाने के लिए लाल रंग में हरा डाल देगा।