2013-04-09 9 views
18

मुझे आश्चर्य है कि rgba को hex में परिवर्तित करने के लिए कोई उपकरण है, जो दृश्यमान आरजीबीए रंग का अनुवाद कर सकता है जिसमें पारदर्शीता हेक्स वैल्यू में हो सकती है।rgba को पारदर्शिता-समायोजित-हेक्स में कैसे परिवर्तित करें?

मैं इस राशि कहते हैं:

rgba(0,129,255,.4) 

जो एक "हल्का नीला" की तरह है ...

मैं अगर वहाँ एक रास्ता एक ही हल्के नीले रंग की "दिखाई पाने के लिए है जानना चाहते हैं "हेक्स में रंग, इसलिए मैं परिवर्तित #0081ff नहीं चाहता लेकिन स्क्रीन पर दिखाई देने वाले रंग के करीब कुछ।

प्रश्न:
कैसे एक पारदर्शिता से समायोजित-हेक्स को RGBA कन्वर्ट करने के लिए?

+0

क्या आपने शेष मानों को बदलने के लिए उस अल्फा प्रतिशत का उपयोग करने का प्रयास किया है? मुझे लगता है कि आप इसे एक सफेद पृष्ठभूमि के खिलाफ आरजीबीए मूल्य के साथ चाहते हैं, इसलिए प्रतिशत को "whiter" मान के बराबर करने के लिए उपयोग करें। उदाहरण: 0,12 9, 255, .4 == 102, 231, 255 ??? बस एक अनुमान – jakobhans

उत्तर

37

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

यह रंग और पृष्ठभूमि के बीच सिर्फ भारित मतलब है, वजन अल्फ़ा चैनल (0 से 1 तक) किया जा रहा है: सफेद rgb(255,255,255) के खिलाफ

Color = Color * alpha + Bkg * (1 - alpha); 

अपने पारदर्शी हल्के नीले रंग rgba(0,129,255,.4) के लिए:

Red = 0 * 0.4 + 255 * 0.6 = 153 
Green = 129 * 0.4 + 255 * 0.6 = 204.6 
Blue = 255 * 0.4 + 255 * 0.6 = 255 

कौन सा rgb(153,205,255) या #99CDFF

+0

हाँ यह सफेद है। तो देखते हैं कि यह कैसे काम करता है :-) – frequent

+0

सही! आपका बहुत बहुत धन्यवाद! – frequent

+0

इसके लिए धन्यवाद - वास्तव में एक टन में मदद करता है! –

3

function hexify(color) { 
 
    var values = color 
 
    .replace(/rgba?\(/, '') 
 
    .replace(/\)/, '') 
 
    .replace(/[\s+]/g, '') 
 
    .split(','); 
 
    var a = parseFloat(values[3] || 1), 
 
     r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255), 
 
     g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255), 
 
     b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255); 
 
    return "#" + 
 
    ("0" + r.toString(16)).slice(-2) + 
 
    ("0" + g.toString(16)).slice(-2) + 
 
    ("0" + b.toString(16)).slice(-2); 
 
} 
 

 
var myHex = hexify('rgba(57,156,29,0.05)'); // "#f5faf3" 
 

 
console.log(myHex);
देता है

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