मेरे पास HTML में कुछ छवियां हैं जिनमें एक सफेद पृष्ठभूमि है। मुझे सफेद पृष्ठभूमि को हटाने की जरूरत है। मैं सोच रहा था कि मैं सभी सफेद पिक्सेल पारदर्शी बना सकता हूं, लेकिन मुझे नहीं पता कि यह कैसे करना है। मैं केवल एचटीएमएल/जावास्क्रिप्ट का उपयोग करना चाहूंगा।कैनवास ImageData सफेद पिक्सल को हटाएं
उत्तर
तरीके से ऐसा करने के लिए है ..
function white2transparent(img)
{
var c = document.createElement('canvas');
var w = img.width, h = img.height;
c.width = w;
c.height = h;
var ctx = c.getContext('2d');
ctx.drawImage(img, 0, 0, w, h);
var imageData = ctx.getImageData(0,0, w, h);
var pixel = imageData.data;
var r=0, g=1, b=2,a=3;
for (var p = 0; p<pixel.length; p+=4)
{
if (
pixel[p+r] == 255 &&
pixel[p+g] == 255 &&
pixel[p+b] == 255) // if white then change alpha to 0
{pixel[p+a] = 0;}
}
ctx.putImageData(imageData,0,0);
return c.toDataURL('image/png');
}
और यह इस विधि के दिए गए मान के लिए एक छवि का src
सेट का उपयोग करें।
var someimage = document.getElementById('imageid');
someimage.src = white2transparent(someimage);
http://jsfiddle.net/gaby/UuCys/
इस कोड को काम करने के लिए के लिए, छवि कोड के रूप में एक ही डोमेन से आ जाना चाहिए (सुरक्षा कारणों से)।
अच्छी तरह से "getImageData" के साथ कैनवास ऑब्जेक्ट से प्राप्त छवि डेटा केवल आरजीबीए पिक्सेल जानकारी है - यानी लाल, हरा, नीला, और अल्फा पारदर्शिता है। इस प्रकार आप छवि डेटा प्राप्त कर सकते हैं और एक बार में चार पिक्सेल देखकर बस फिर से चला सकते हैं। जब आप एक सफेद देखते हैं, तो आप इसे शून्य कर सकते हैं (अल्फा मान के साथ)।
अब बात यह है कि आप परिणामों से संतुष्ट नहीं होंगे क्योंकि अभी भी गैर-सफेद तत्वों के आस-पास "हेलो" होगा। मूल छवि रंगीन क्षेत्रों के किनारों पर (शायद) थोड़ा धुंधला, प्रभावशाली एंटी-एलाइज्ड है। इस प्रकार किनारों के साथ पिक्सल हैं जो मुख्य छवि की तुलना में थोड़ा हल्का है, और आप उन सभी शुद्ध सफेद लोगों को हटाने के बाद भी उनको देखेंगे।
किनारों को वास्तव में साफ करने के लिए वास्तव में आपको किस प्रकार की स्रोत छवियां मिलती हैं, इस पर निर्भर करता है। मुझे नहीं लगता कि यह बढ़त छवि प्रसंस्करण या कुछ भी काट रहा है, लेकिन यह मामूली नहीं है।
एक जेपीजी का उपयोग करने के बजाय, छवि के चारों ओर एक पारदर्शी पृष्ठभूमि के साथ एक पीएनजी का उपयोग करें। आपके पास एक बेहतर परिणाम होगा।
लेकिन आप ड्राइंग से पहले बस स्पष्ट करना चाहते हैं imageData वहाँ एक छोटी समाधान :)
function clearData(imageData )
{
var d = imageData.data;
var L = d.length;
for (var i = 3; i < L; i += 4)
{
d[i] = 0;
}
}
है
- 1. OpenCV समूहीकरण सफेद पिक्सल
- 2. जावास्क्रिप्ट: कैनवास के बिना ImageData प्राप्त करना
- 3. एक छवि से सफेद पृष्ठभूमि को हटाएं
- 4. एंड्रॉइड कैनवास कुछ पिक्सल रंग बदलते हैं
- 5. IplImage imageData
- 6. ImageData को Uint8ClampedArray स्थापना फ़ायरफ़ॉक्स
- 7. कोरग्राफिक्स एक सफेद कैनवास पर एक छवि खींचते हैं
- 8. जावास्क्रिप्ट/gwt: Uint8Array या ArrayBuffer को ImageData तत्व
- 9. ImageData क्लोन कैसे करें?
- 10. पिक्सल
- 11. पिक्सल
- 12. पिक्सल
- 13. जावास्क्रिप्ट/jQuery: कैनवास से आकार/पथ हटाएं
- 14. कैनवास
- 15. जावास्क्रिप्ट में imageData से एक छवि कैसे उत्पन्न करें?
- 16. कैनवास
- 17. गैर-पारदर्शी पिक्सेल सफेद
- 18. जावा: पिक्सल
- 19. मौजूदा छवि फ़ाइल के शीर्ष पर 20 पिक्सल सफेद कैसे जोड़ें?
- 20. सी # - फसल पारदर्शी/सफेद स्थान
- 21. एचटीएमएल 5 कैनवास इरेज़र
- 22. एंड्रॉइड: माप टेक्स्ट() स्केल किए गए पिक्सल पर आधारित पिक्सल
- 23. मिमी को पिक्सल में कनवर्ट करें
- 24. स्क्रीन पिक्सल को कैसे पढ़ा जाए?
- 25. पिक्सल को इंच में बदलें और सी #
- 26. आसपास के पिक्सल
- 27. एंड्रॉइड बिटमैप: पारदर्शी पिक्सल को रंग में बदलें
- 28. गूगल मैप्स: एक्स पिक्सल
- 29. पिक्सल में छवियों का आकार निर्दिष्ट करने के बारे पिक्सल
- 30. ओपनजी उलटा फ्रेमबफर पिक्सल