मैं एक छवि के एक उदाहरण को लोड करने के लिए एचटीएमएल 5 कैनवास का उपयोग कर रहा हूं जिसे मैं एक बार कैनवास पर कई बार ब्लाइट करता हूं। इसे अनुकूलित करने के लिए छवि को कुछ मामूली पिक्सेल-आधारित हेरफेर की आवश्यकता है। हमले की मेरी प्रारंभिक योजना छवि को लोड करना था, इसे बैकिंग कैनवास में फिसलना था, इसके शीर्ष पर मेरे संशोधनों को आकर्षित करना था, और फिर छवि डेटा को पकड़ना और भविष्य के उपयोग के लिए इसे कैश करना था।एचटीएमएल 5 कैनवास छवि कैशिंग/putImageData प्रश्न
context.drawImage(img, 0, 0);
context.fillStyle = '#ffffff';
context.fillRect(0, 0, 2, 2); // Draw a 2x2 rectangle of white pixels on the top left of the image
imageData = context.getImageData(0, 0, img.width, img.height);
cusomImage = imageData;
हालांकि यह काम करता है, मैंने देखा है कि मेरी छवि (जो एक पारदर्शी PNG है) पारदर्शिता बनाए रखने नहीं करता है:
यहाँ कुछ कोड मैं उस प्रभाव के लिए लिखा गया है। इसके बजाए, putImageData को अपने सामने वाले कैनवास पर रखने के लिए, इसे काले रंग की पृष्ठभूमि के साथ प्रस्तुत किया जाता है। मैं पारदर्शिता कैसे बनाए रखूं?
कोई सुझाव स्वागत है!
भविष्य के उपयोग के लिए आप छवि डेटा को क्यों पकड़ रहे हैं? जब आप इसे आकर्षित करने की आवश्यकता होती है तो आप केवल कैनवास का उपयोग कर सकते हैं: 'newContext.drawImage (oldCanvas, 0, 0);' मुझे लगता है कि यह तेज़ होगा और संभवतः कम स्मृति का उपयोग करेगा। – andrewmu
क्या इसका मतलब यह नहीं है कि मुझे प्रत्येक बिटमैप को अपने स्वयं के व्यक्तिगत कैनवास में आकर्षित करना है? मैं 5 और 10 बिटमैप्स के बीच कहीं भी अनुमान लगा रहा हूं। निश्चित रूप से यह इष्टतम से कम है? – ndg