2010-09-09 7 views
8

मुझे आश्चर्य है कि क्या दो या दो से अधिक छवियों को मिश्रण मोड का उपयोग करके एक वेबपृष्ठ पर मिश्रित करना संभव है जैसे कि आप फ़ोटोशॉप (ओवरले, स्क्रीन, लाइटन इत्यादि) में पाएंगे।सीएसएस या जावास्क्रिप्ट का उपयोग कर वेब पृष्ठों में फ़ोटोशॉप-एस्क्यू मिश्रण मोड?

मुझे पता है कि इस तरह की चीज फ़्लैश और जावा के साथ संभव है, लेकिन क्या यह सीएसएस या जावास्क्रिप्ट के साथ किसी भी प्लगइन के बिना संभव है? मैंने इस प्रभाव के कुछ जावास्क्रिप्ट उदाहरण देखे हैं जो अपेक्षाकृत छोटी छवियों पर काम करते हैं, लेकिन मुझे उच्च रिज़ॉल्यूशन छवियों पर प्रदर्शन करने में दिलचस्पी है ... यह पूरी तरह प्रयोगात्मक उद्देश्यों के लिए है।

उत्तर

6

कैनवास तत्व के साथ, आप ओवरले प्राप्त कर सकते हैं और आसानी से हल्का कर सकते हैं। कैनवास में प्रत्येक बिटमैप को प्रस्तुत करने से पहले यह आपके द्वारा निर्दिष्ट सेटिंग्स के बारे में है।

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Canvas_tutorial/Compositing

5

मैं एक अलग, हल्के, खुला स्रोत पुस्तकालय बनाया है एक से दूसरे एचटीएमएल कैनवास संदर्भ से फ़ोटोशॉप शैली मिश्रण मोड प्रदर्शन के लिए: context-blender

// Might be an 'offscreen' canvas 
var over = someCanvas.getContext('2d'); 
var under = anotherCanvas.getContext('2d'); 

over.blendOnto(under, 'screen', {destX:30,destY:15}); 

अधिक जानकारी के लिए README देखें, वर्तमान संस्करण में समर्थित मिश्रण मोड सहित: यहाँ नमूना उपयोग है।

+0

इस पुस्तकालय की तरह दक्षता क्या है? – Greg

+0

@ ग्रेग मुझे 141x141 क्षेत्र की सीधी प्रति पर ~ 210fps मिलता है, और सफारी v5 का उपयोग करते हुए ~ 160 एफपीएस "अंतर" मोड (वर्तमान खराब प्रदर्शन करने वाला) प्रदर्शन करता है। क्रोम पर प्रदर्शन बेहतर है, फ़ायरफ़ॉक्स खराब है। मेरे पास केवल एक मुख्य अनुकूलन है (जानबूझकर) नहीं बनाया गया है: अभी पिक्सल पर 'लूपिंग' के अंदर 'स्विच' है। प्रत्येक 'केस' के अंदर लूप को विस्फोट करने के बजाय 5-10% स्पीड बूस्ट प्रदान करता है, लेकिन कोड बेस के बदसूरत, गैर-डीआरवाई विस्तार पर, सभी मोडों के लिए सामान्य गणना डुप्लिकेटिंग। – Phrogz

+0

@ ग्रेग लाइब्रेरी वर्तमान में एक पठनीय [कोड की 145 लाइनें] (https://github.com/Phrogz/context-blender/blob/master/context_blender.js) है (उनमें से 14 में टिप्पणियां हैं जिनकी मुझे वास्तव में आवश्यकता है बस हटाने के लिए)। – Phrogz