2012-09-22 18 views
29

क्या वेबकिट ब्राउज़र में ओवरले के बिना सीएसएस का उपयोग करके एक विशिष्ट रंग के साथ एक छवि को टेंट करना संभव है?ओवरले के बिना सीएसएस का उपयोग कर टिंट छवि

असफल प्रयासों

  • छवि सेपिया या एक मनमाना रंग hue-rotate का उपयोग कर टिंट प्रबंधित लेकिन एक विशिष्ट रंग के साथ यह टिंट के लिए एक रास्ता नहीं मिल सका।
  • एक "टिंट" एसवीजी फ़िल्टर बनाना और इसे -webkit-filter: url(#tint) के साथ कॉल करना क्रोम पर काम नहीं करता है।
  • /box-shadow सीएसएस गुण drop-shadow/opacity फ़िल्टर के सभी संभावित संयोजन वांछित प्रभाव उत्पन्न नहीं करते हैं।

विचार

  • एक रंग को देखते हुए, नहीं यह HSB फिल्टर (hue-rotate, saturation, brightness) ने अपने रंग उत्पन्न करने के लिए गठबंधन करने के लिए संभव हो सकता है?
+16

पर गतिशील डेमो मुझे आश्चर्य है कि क्यों सेपिया एक शाही उपचार मिल गया। – hpique

+0

मैंने कई समाधान देखे हैं जो वास्तव में ऐसा करने के लिए कैनवास और जावास्क्रिप्ट पर भरोसा करते हैं ... जो आदर्श से कम है। –

+0

आपने प्रश्न में '-webkit-filter' के साथ एक टाइपो बनाया है। यह पुष्टि करने के लिए अच्छा हो सकता है कि आपने अपने कोड में एक ही टाइपो नहीं बनाया है? ;-) – Spudley

उत्तर

21

आखिरकार यह शेडर्स का उपयोग कर होगा। फ़िल्टर पर डब्ल्यू 3 सी डॉक्स देखें।

पल में क्या उदाहरण के लिए संभव है:

-webkit-filter: grayscale; /*sepia, hue-rotate, invert....*/ 
-webkit-filter: brightness(50%); 

देखें

अद्यतन:

एडोब जारी की अपनी HTML5 आधारित समर्थित ब्राउज़र पर custom filters (Shaders) के लिए समर्थन के साथ CSS Filter Labs:

enter image description here

+0

शेडर्स को बहिष्कृत कर दिया गया है - फ़िल्टर के साथ ऐसा करने के लिए उपयोग करें! –

13

जब कोई योग्य स्वतंत्र टिंट फिल्टर आप कर रहे हैं छायांकन के बिना मौजूदा फिल्टर की संरचना द्वारा एक प्रकार का बना सकते हैं।

सेपिया कम्बाइन रंग एकजुट करने के लिए है, तो रंग आप चाहते हैं इसके साथ

-webkit-filter: sepia(90%) hue-rotate(90deg); 

मैं अपने टिंट के लिए एक अल्फा मूल्य, इसके वास्तव में एक ओवरले के साथ सीमाओं का उपयोग रंगा हुआ है लेकिन नहीं करता है 'के लिए रंग-बारी बारी से जब कोई अन्य ब्राउज़र उन फ़िल्टर प्राप्त करता है तो सेपिया + ह्यू-रोटेट में संक्रमण करने के लिए किसी भी अतिरिक्त डोम तत्वों का उपयोग करें।

+0

ह्यू-रोटेट काफी टूटा हुआ है - यह संतृप्त रंगों पर एक बहुत ही गलत काम करता है - विशेष रूप से चिल्लाना क्योंकि यह वास्तव में आरजीबी स्पेस में एक बहुत ही खराब अनुमान है, वास्तविक एचएसएल स्पेस नहीं है। –

+0

जब तक मैं कुछ याद नहीं कर रहा हूं, यह मोटे तौर पर सफेद-पर-काले छवियों के लिए काम नहीं करता है, क्योंकि सेपिया और ह्यू-रोटेट सफेद को बहुत प्रभावित नहीं करते हैं। –

+0

@GrantBirchmeier 'चमक (50%); 'सफेद से भूरे रंग में बदल जाएगा। – GKFX

6

तब अंडरले के बारे में कैसे?

HTML:

<span class="tint"><img src="..." /></span> 

सीएसएस:

.tint { background-color:red; display:inline-block; } 
.tint img { opacity:0.8 } 

रंग और अस्पष्टता ट्वीक के रूप में आप चाहते हैं। वास्तव में उन पर पारदर्शिता वाले छवियों पर काम नहीं करता है।

13

box-shadow: inset 0px 0px 64px 64px cornflowerblue, 0px 0px 4px 4px cornflowerblue;

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

+4

कृपया अपने उत्तर में कुछ स्पष्टीकरण भी जोड़ें! –

+0

यदि यह आपका उत्तर है, तो यह एक टिप्पणी होना चाहिए। – ChiefTwoPencils

+0

वहां आप जाते हैं, उम्मीद है कि यह आपको खुश करे – Frevd

16

शेडर्स का उपयोग किए बिना आज एक एसवीजी फ़िल्टर का उपयोग करना संभव है। आप इसे एक सीएसएस फ़िल्टर के रूप में उपयोग कर सकते हैं (हालांकि यह आईई में काम नहीं करेगा) -webkit-filter: "url (#yourfilterID)" आदि वाक्यविन्यास के माध्यम से।

<svg width="800px" height="600px" viewbox="0 0 800 600"> 
    <defs> 
     <filter id="f1" x="0%" y="0%" width="100%" height="100%" color-interpolation-filters="sRGB"> 
     <feColorMatrix id="tinter" type="matrix" values=".6 .6 .6 0 0 
                  .2 .2 .2 0 0 
                  .0 .0 .0 0 0 
                  0 0 0 1 0"/> 
     </filter>  
    </defs> 

<image x="0" y="0" width="550" height="370" preserveAspectRatio="true" 
    filter="url(#tinter)" xlink:href="http://www.crossfitwaxahachie.com/wp-content/uploads/2012/04/IMG_0752.jpg"/> 
</svg> 

http://codepen.io/mullany/details/baLkH/

+2

यह क्यों नहीं रहा है अधिक उत्साहित? @Michael Mullany एक तरीका है जिसे आप हेक्स रंगों को मैट्रिक्स मानों में अनुवाद करने के बारे में जानते हैं? – dopatraman

+2

मैट्रिक्स मान 0 से 1 स्केल पर हैं - इसलिए अपने हेक्स वैल्यू को लें और अपने इच्छित मान प्राप्त करने के लिए इसे 255 (या एफएफ) से विभाजित करें। उदाहरण के लिए यदि आप 100% लाल चाहते हैं, तो पहली पंक्ति 1 1 1 0 0 होगी। यदि आप 50% हरा चाहते हैं, तो दूसरी पंक्ति 0.5 0.5 0.5 0 0 होगी। –

+0

मुझे लगता है कि पहले 4 कॉलम आरजीबीए हैं लेकिन ... 5 वां कॉलम क्या है? – dopatraman