आप नहीं हैं, मुझे पता है कि एचटीएमएल 5 कैनवास तत्व में ग्राफिक्स के लिए सीएसएस लागू करने में सक्षम है (क्योंकि वे डीओएम का हिस्सा नहीं हैं)।
हालांकि, यह ठीक है! हम अभी भी बुनियादी फिल्टर प्रभाव अपेक्षाकृत आसान कर सकते हैं और उन्हें जावास्क्रिप्ट की कुछ पंक्तियों के साथ एक छवि के रूप में सहेज सकते हैं।
मुझे एक अच्छा लेख मिला जो sepia-like effect to the canvas and saving it as an image लागू करने पर चला गया। इसे कॉपी करने के बजाय, मैं लेख से बड़े अधिग्रहण को हाइलाइट करूंगा।
संशोधित करना कैनवास छवि:
var canvas = document.getElementById('canvasElementId'),
context = canvas.getContext('2d');
var imageData = context.getImageData(0, 0, canvas.width, canvas.height);
for (var i = 0; i < imageData.data.length; i+=4) {
...
}
क्रम कुछ कैनवास API तक पहुंच को पाने के लिए, आप जावास्क्रिप्ट ऊपर का उपयोग कर कैनवास पर 2 डी संदर्भ को सक्रिय करना होगा। एमडीएन में एपीआई पर कुछ महान दस्तावेज हैं जो context object के साथ आपके लिए उपलब्ध हैं, लेकिन यहां ध्यान देने योग्य महत्वपूर्ण हिस्सा getImageData()
कॉल है। असल में, यह आपके द्वारा परिभाषित क्षेत्र में सभी पिक्सेल मानों को पकड़ लेगा (ऊपर दिए गए मामले में, हम पूरी छवि को पकड़ रहे हैं)। फिर, इस डेटा के साथ, हम सभी पिक्सल के माध्यम से पुनरावृत्त कर सकते हैं और आवश्यकतानुसार उन्हें बदल सकते हैं। sepia article में, यह स्पष्ट रूप से कुछ दिलचस्प समायोजन कर रहा है, लेकिन आप आवश्यकतानुसार ग्रेस्केल, धुंधला या कोई अन्य परिवर्तन भी कर सकते हैं और इसके लिए एक शानदार canvas filters library on Github है।
कैसे कैनवास छवि को बचाने के लिए:
var canvas = document.getElementById('canvasElementId'),
image = document.createElement("img");
image.src = canvas.toDataURL('image/jpeg');
document.body.appendChild(image);
ऊपर स्क्रिप्ट अपने कैनवास का चयन (यह मानते हुए आप पहले से ही अपने ड्राइंग किया है) और एक छवि तत्व पैदा करेगा। यह यूआरएल उत्पन्न करने के लिए toDataURL()
का उपयोग करता है जिसे आप छवि तत्व पर स्रोत सेट करने के लिए उपयोग कर सकते हैं। उपर्युक्त उदाहरण में, छवि तत्व दस्तावेज़ निकाय में जोड़ा गया है। आप MDN's canvas page पर अधिक जानकारी देख सकते हैं।
स्रोत
2013-06-15 23:07:22
क्या यह हल हो गया है? coz मैं बिल्कुल एक ही समस्या थी। – user3508453
एक ही समस्या है – Ronnie