JavaScript कॅनव्हासमध्ये मास्क केलेल्या इमेज बॉर्डर्सवर प्रभुत्व मिळवणे
जावास्क्रिप्ट व्हिज्युअल इफेक्ट्सच्या निर्मितीमध्ये मल्टिपल पिक्चर फ्यूजन ही एक सामान्य पायरी आहे. मास्कसह प्रतिमेचे दृश्य क्षेत्र परिभाषित करणे हे एक वारंवार तंत्र आहे. हे अद्वितीय फॉर्म तयार करण्यासाठी उपयुक्त असले तरी, त्या मुखवटा घातलेल्या आकारांभोवती सीमा जोडणे आव्हानात्मक असू शकते. जरी द कॅनव्हास JavaScript मधील घटक विस्तृत इमेज मॅनिप्युलेशन ऑफर करतो, मुखवटा घातलेल्या प्रतिमेभोवती सीमा समायोजित करणे सोपे नाही.
डेव्हलपर मास्क लावू शकतात आणि कल्पनारम्य मार्गांनी चित्रे क्लिप करू शकतात कॅनव्हास API, जरी डीफॉल्टनुसार, व्युत्पन्न केलेली कोणतीही सीमा कॅनव्हासच्या आयताकृती आकाराशी जुळते. जेव्हा आपण मास्कद्वारे परिभाषित केलेल्या गुंतागुंतीच्या आकाराच्या किनारीशी जुळणारी सीमा तयार करू इच्छित असाल, तेव्हा ही एक समस्या आहे. सरळ आयताकृती सीमेच्या पलीकडे मास्कच्या अचूक प्रवासाचे अनुसरण करणे हा उद्देश आहे.
हे पोस्ट JavaScript मध्ये इमेज मास्क कसा लागू करायचा आणि अधिक महत्त्वाचे म्हणजे, मुखवटा घातलेल्या चित्राचा वेगळा आकार बॉर्डरने वेढलेला आहे याची खात्री कशी करायची हे स्पष्ट करेल. याव्यतिरिक्त, आम्ही अशा फंक्शनवर जाऊ जे मास्किंग पूर्ण करते परंतु अद्याप परिभाषित सीमा समाधान नाही.
कॅनव्हासमधील संमिश्र ऑपरेशन्ससह कसे कार्य करावे हे शिकून तुम्ही बॉर्डरचे स्वरूप चांगले करू शकता. चला प्रारंभ करूया आणि मुखवटा घातलेल्या प्रतिमेभोवती आवश्यक सीमा जोडण्यासाठी JavaScript ची कॅनव्हास वैशिष्ट्ये कशी वापरायची ते पाहू.
आज्ञा | वापराचे उदाहरण |
---|---|
globalCompositeOperation | कॅनव्हासवर रेखांकन क्रियांची रचना या वैशिष्ट्याद्वारे परिभाषित केली जाते. उदाहरणातील globalCompositeOperation ='source-in' हे सुनिश्चित करते की मुखवटा प्रतिमा मुख्य चित्राला क्लिप करते जेणेकरून केवळ एकमेकांना छेदणारे क्षेत्र दिसतील. |
toDataURL() | कॅनव्हासची माहिती Base64 सह एन्कोड केलेल्या प्रतिमेमध्ये रूपांतरित करते. यामुळे मास्क आणि बॉर्डर लावल्यानंतर तयार झालेल्या प्रतिमेचा PNG म्हणून वापर करणे शक्य होते. उदाहरणाचे इमेज आउटपुट canvas.toDataURL('image/png') वापरून तयार केले जाते. |
crossOrigin | हे वैशिष्ट्य कॅनव्हासमध्ये भिन्न डोमेनवरून लोड केलेल्या चित्रांचा वापर सक्षम करून सुरक्षा निर्बंधांचा आदर करते. MaskImg.crossOrigin = 'अनामिक' हमी देते की मास्क इमेजमध्ये प्रवेश CORS समस्या न आणता केला जाऊ शकतो. |
beginPath() | कॅनव्हासवर, ही पद्धत वापरून नवीन मार्ग सुरू केला जाऊ शकतो. दुसरी पद्धत ctx.beginPath() ला कॉल करते जेणेकरून पाथ मुखवटाच्या समोच्चला चिकटतो कारण तो मुखवटा घातलेल्या प्रतिमेभोवती सानुकूल सीमा काढतो. |
moveTo() | या प्रक्रियेसह, कोणतीही रेखाचित्रे तयार केली जात नाहीत; त्याऐवजी, "पेन" नवीन सुरुवातीच्या ठिकाणी हलविले आहे. सीमेचा आरंभ बिंदू ctx.moveTo(0, 0) वापरून उदाहरणामध्ये स्थित आहे, जो मुखवटाच्या सीमांभोवती अचूकपणे सीमा रेखाटण्यासाठी आवश्यक आहे. |
lineTo() | दिलेल्या निर्देशांकांचा प्रारंभ बिंदू म्हणून वापर करून, हे तंत्र सरळ रेषा काढते. मुखवटा घातलेल्या प्रतिमेची सीमा ctx.lineTo(maskImg.width, 0) वापरून सोल्युशनमध्ये काढलेल्या रेषांद्वारे परिभाषित केली जाते. |
stroke() | नियुक्त मार्गावर, सीमा किंवा रेषा काढतो. उदाहरणार्थ, moveTo() आणि lineTo() मास्क फॉर्म परिभाषित करण्यासाठी वापरले जातात आणि नंतर ctx.stroke() चा वापर मुखवटा घातलेल्या प्रतिमेभोवती सीमा लागू करण्यासाठी केला जातो. |
lineWidth | कॅनव्हासवर रेषा किती जाड रंगवल्या आहेत हे निर्धारित करते. स्क्रिप्ट ctx.lineWidth = 5 वापरून मुखवटाच्या आकाराभोवती 5-पिक्सेल जाडीची सीमा स्थापित करते. |
strokeStyle | बॉर्डरचा रंग किंवा शैली दर्शवते. उदाहरणातील सीमा रंग ctx.strokeStyle ='red' वापरून लाल वर सेट केला आहे. |
मुखवटा घातलेल्या प्रतिमेला सीमा कशी लागू करावी हे ओळखणे
प्रदान केलेल्या स्क्रिप्टचा उद्देश एका प्रतिमेसाठी मुखवटा म्हणून दुसरे चित्र वापरणे आणि नंतर वापरणे हे आहे कॅनव्हास API मुखवटा घातलेल्या आकाराभोवती सानुकूल सीमा जोडण्यासाठी. मुखवटा आणि मुख्य प्रतिमेसाठी फंक्शनच्या सुरुवातीला दोन नवीन इमेज ऑब्जेक्ट्स तयार केल्या जातात. बाह्य स्त्रोतांकडून फोटो लोड करताना, CORS मुळे समस्या टाळण्यासाठी क्रॉस-ओरिजिन सेटिंग आवश्यक आहे. एक कॅनव्हास तयार होतो आणि दोन्ही प्रतिमा लोड केल्यावर मुखवटा प्रतिमेशी जुळण्यासाठी त्याचे प्रमाण समायोजित केले जाते. हे प्रतिमा रेखांकन दरम्यान आकार बदलण्याची समस्या टाळते आणि कॅनव्हास योग्य क्षेत्रासह कामासाठी तयार असल्याची हमी देते.
स्क्रिप्ट नंतर वापरते चित्र काढा() कॅनव्हासवर मुखवटा प्रतिमा काढण्याचे कार्य. असे केल्याने, मुखवटा कॅनव्हासवर लागू केला जातो, मास्किंग प्रक्रियेसाठी पाया स्तर म्हणून काम करतो. मास्क योग्यरित्या लागू करण्यासाठी ग्लोबल कंपोझिट ऑपरेशन "सोर्स-इन" वर सेट केले जाणे आवश्यक आहे. कॅनव्हासला मुखवटाच्या प्रतिमेशी सुसंगत असलेल्या प्राथमिक चित्राची फक्त क्षेत्रे ठेवण्याची सूचना दिली आहे. थोडक्यात, मुखवटा मुख्य प्रतिमा ज्या आकारात क्लिप केली आहे ते परिभाषित करतो. जेव्हा या क्लिपिंग क्षेत्रामध्ये मुख्य चित्र काढले जाते तेव्हा संयुक्त ऑपरेशन "स्रोत-ओव्हर" वर रीसेट केले जाते, पूर्वी क्लिप केलेल्या सामग्रीवर परिणाम न करता सीमा पेंटिंगसारख्या अतिरिक्त क्रिया सक्षम करते.
मुखवटा घातलेल्या आकारावर सीमा लागू करताना वापरणे समाविष्ट आहे स्ट्रोक() तंत्र कॅनव्हासवरील निर्दिष्ट मार्ग किंवा फॉर्म या आदेशाद्वारे दर्शविला जातो. दुसऱ्या सोल्युशनमध्ये, moveTo() आणि lineTo() मॅन्युअली कॅनव्हास मार्ग तयार करण्यासाठी आणि मुखवटाच्या सीमा शोधण्यासाठी एकत्र केले जातात. या तंत्रांचा वापर करून, तुम्ही बॉर्डरचा आकार व्यक्तिचलितपणे निर्दिष्ट करू शकता आणि ते आयताकृती कॅनव्हासच्या सीमेऐवजी मुखवटाच्या आकाराचे पालन करत असल्याची खात्री करा. सीमेच्या दिसण्यावर तुमचे पूर्ण नियंत्रण आहे कारण रेषा रुंदी मालमत्ता सीमा च्या जाडी सेट करते आणि स्ट्रोक शैली मालमत्ता त्याचा रंग सेट करते.
शेवटी, toDataURL() फंक्शनचा वापर कॅनव्हासला बेस64 स्ट्रिंगमध्ये रूपांतरित करण्यासाठी केला जातो. असे केल्याने, तयार केलेली प्रतिमा—मास्क आणि बॉर्डर समाविष्ट—हे एका फॉरमॅटमध्ये रूपांतरित केले जाते जे प्रोग्रामच्या इतर भागात सहजपणे वापरले जाते किंवा सर्व्हरवर अपलोड केले जाते. वेळेच्या चुका टाळण्यासाठी, वचन हे सुनिश्चित करते की हे ऑपरेशन फक्त दोन्ही चित्रे पूर्णपणे लोड झाल्यावरच संपेल. जावास्क्रिप्टच्या कॅनव्हास घटकासह मास्किंग आणि डायनॅमिक बॉर्डर लागू करणे यासह अत्याधुनिक प्रतिमा सुधारणेचे तंत्र या स्क्रिप्ट्स दाखवतात.
पद्धत 1: मुखवटा घातलेल्या प्रतिमेत सानुकूल सीमा जोडण्यासाठी कॅनव्हास आणि स्ट्रोक पद्धत वापरणे
मुखवटा घातलेल्या प्रतिमेभोवती सीमा तयार करण्यासाठी, हा दृष्टिकोन JavaScript आणि Canvas API चा वापर करतो. स्ट्रोक() चा वापर मुखवटा घातलेल्या आकाराची रूपरेषा करण्यासाठी केला जातो.
function applyFiltersAndConvertToBase64(imageUrl, materialImage) {
return new Promise((resolve, reject) => {
const maskImg = new Image();
const mainImg = new Image();
maskImg.crossOrigin = "anonymous";
mainImg.crossOrigin = "anonymous";
let imagesLoaded = 0;
const onLoad = () => {
imagesLoaded++;
if (imagesLoaded === 2) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = maskImg.width;
canvas.height = maskImg.height;
ctx.drawImage(maskImg, 0, 0);
ctx.globalCompositeOperation = 'source-in';
ctx.drawImage(mainImg, 0, 0, maskImg.width, maskImg.height);
ctx.globalCompositeOperation = 'source-over';
ctx.lineWidth = 5; // Border thickness
ctx.strokeStyle = 'red'; // Border color
ctx.stroke(); // Draw border around mask
const base64Image = canvas.toDataURL('image/png');
resolve(base64Image);
}
};
maskImg.onload = onLoad;
mainImg.onload = onLoad;
maskImg.onerror = reject;
mainImg.onerror = reject;
maskImg.src = imageUrl;
mainImg.src = materialImage;
});
}
पर्याय २: कॅनव्हास पथ वापरून मुखवटाच्या आकाराभोवती सानुकूल सीमा तयार करा
ही पद्धत JavaScript सह Canvas API वापरून इमेज मास्क पाथ फॉलो करून बॉर्डर मास्क केलेल्या आकाराचे बारकाईने पालन करते याची खात्री करते.
१
JavaScript मध्ये सानुकूल बॉर्डर्ससह मुखवटा घातलेल्या प्रतिमा वाढवणे
तुमच्या JavaScript ऍप्लिकेशनचा वापरकर्ता अनुभव प्रतिमा मास्क करण्याच्या आणि सानुकूल सीमा सेट करण्याच्या क्षमतेद्वारे मोठ्या प्रमाणात वाढविला जाऊ शकतो. कॅनव्हास API. मास्किंगच्या मदतीने, मास्क म्हणून ओळखल्या जाणाऱ्या दुसऱ्या प्रतिमेवर अवलंबून, प्रतिमेचे कोणते क्षेत्र दृश्यमान आहेत हे तुम्ही ठरवू शकता. मुखवटा घातलेल्या झोनभोवती सीमा जोडणे ही एक समस्या आहे जी अनेक विकसकांना भेडसावते, विशेषत: जेव्हा मुखवटा सरळ आयताकृती आकार नसतो. मास्कच्या बाह्यरेषेशी तंतोतंत जुळणारे बॉर्डर असलेले प्रकल्प अधिक सुंदर आणि तज्ज्ञ दिसतील.
या समस्येवर उपयुक्त उपाय म्हणजे Canvas API चा वापर करणे पथ2D वस्तू तुम्ही Path2D वापरू शकता जटिल मार्ग डिझाइन करण्यासाठी जे तुमच्या मुखवटाच्या आराखड्यात बसतात आणि नंतर त्यांना बॉर्डरने घेरतात. ही पद्धत तुम्हाला पारंपारिक आयतांच्या पलीकडे जाऊन तुमच्या सानुकूल मुखवटाच्या कोपऱ्यांशी तंतोतंत जुळणाऱ्या सीमा निर्माण करू देते. वापरत आहे moveTo() आणि १ एकत्रितपणे मुखवटाची बाह्यरेखा शोधणे सोपे करते आणि तंतोतंत संरेखित केलेल्या सीमारेषेची हमी देते.
कार्यप्रदर्शन हा विचारात घेण्याचा आणखी एक महत्त्वाचा घटक आहे, विशेषत: मोठ्या इमेजसह काम करताना किंवा रिअल-टाइममध्ये डायनॅमिकपणे सीमा लागू करताना. मुखवटा घातलेले चित्र कॅश करणे, ड्रॉइंग ऑपरेशन्स कमी करणे आणि कॅनव्हास रेंडरिंग प्रक्रिया सुव्यवस्थित करणे यासारख्या धोरणांचा वापर करून तुमच्या अनुप्रयोगाचा वेग सुधारला जाऊ शकतो. अगदी क्लिष्ट किंवा उच्च-कार्यक्षमता सेटिंग्जमध्ये, आपण हमी देऊ शकता की मास्किंग आणि बॉर्डर-ड्राइंग प्रक्रिया निरर्थक क्रिया कमी करून सहजतेने जातात.
कॅनव्हास वापरून मास्किंग आणि बॉर्डरिंग इमेज बद्दल वारंवार विचारले जाणारे प्रश्न
- JavaScript मध्ये, एक मुखवटा लावण्यासाठी मी दुसरी प्रतिमा कशी वापरू शकतो?
- वापरत आहे 2 वर सेट करा 'source-in', वापरून प्रतिमा मास्क करण्यासाठी कॅनव्हासवर मुखवटा काढा कॅनव्हास API. मुखवटा जुळण्यासाठी, हे प्राथमिक प्रतिमा क्रॉप करेल.
- मी मुखवटा घातलेल्या प्रतिमेची बॉर्डर कशी तयार करू शकतो जी त्याच्या आकाराशी सुसंगत आहे?
- सह मुखवटाचा मार्ग स्थापित केल्यानंतर moveTo() आणि १, वापरा stroke() तंत्र हे तुम्हाला मास्कच्या आकाराला वैयक्तिक बॉर्डरसह घेरण्यास अनुमती देईल.
- उद्देश काय आहे ७ कॅनव्हास हाताळणी मध्ये?
- कॅनव्हासची सामग्री द्वारे बेस64-एनकोड केलेल्या प्रतिमेमध्ये रूपांतरित केली जाते ७ फंक्शन, PNG प्रतिमा म्हणून वापरणे किंवा वितरित करणे सोपे करते.
- कामगिरीसाठी मी कॅनव्हास ऑपरेशन्स कसे ऑप्टिमाइझ करू शकतो?
- ड्रॉइंग ऑपरेशन्सचे प्रमाण कमी करा आणि कॅनव्हासचा वेग वाढवण्यासाठी सामान्यतः वापरलेले घटक संग्रहित करण्याचा विचार करा. हे तुमचे ऍप्लिकेशन सुरळीतपणे कार्य करत राहते आणि रीड्रॉची संख्या कमी करते.
- मी कॅनव्हासमध्ये क्रॉस-ओरिजिन इमेज लोड करू शकतो का?
- होय, परंतु CORS अडचणी न आणता प्रतिमा उपलब्ध करून देण्यासाठी, तुम्हाला सेट करणे आवश्यक आहे ९ करण्यासाठी मालमत्ता 'anonymous'.
मास्किंग आणि सीमांवरील अंतिम विचार
JavaScript ॲप्समध्ये, प्रतिमा मास्क करणे आणि कॅनव्हासमध्ये सानुकूल सीमा लागू करणे हे पॉलिश व्हिज्युअल घटक तयार करण्याचा एक प्रभावी मार्ग आहे. विकसकांकडे चित्रांचे प्रस्तुतीकरण आणि शैली वापरून हाताळण्याची क्षमता आहे कॅनव्हास API आणि अत्याधुनिक रेखाचित्र आदेश जसे की स्ट्रोक() आणि मार्ग व्याख्या.
विशेषत: मोठ्या फोटोंसाठी सीमा आणि मास्किंग ऑपरेशन्स काळजीपूर्वक ऑप्टिमाइझ करून गुळगुळीत कार्यप्रदर्शन सुनिश्चित केले जाते. हे ट्यूटोरियल नॉन-आयताकृती प्रतिमांच्या आसपासच्या बॉर्डर डायनॅमिकपणे पेंट करण्यासाठी एक उपयुक्त पद्धत प्रदान करते, जे सौंदर्यदृष्ट्या आनंददायक आणि प्रतिसाद देणारे ऑनलाइन ॲप्स विकसित करताना उपयुक्त आहे.
कॅनव्हासमधील मास्किंग आणि बॉर्डर तंत्रांसाठी संदर्भ
- वापरण्यासाठी तपशीलवार मार्गदर्शक कॅनव्हास API चित्रे आणि मुखवटे हाताळण्यासाठी, जसे की रेखाचित्र ऑपरेशन्ससह 4 आणि 2: MDN वेब डॉक्स .
- JavaScript मध्ये इमेज मास्किंग आणि क्रॉस-ओरिजिन संसाधने कशी हाताळायची याचे सर्वसमावेशक स्पष्टीकरण: HTML5 कॅनव्हास ट्यूटोरियल .
- इमेज रेंडरिंग आणि ड्रॉइंग ऑपरेशन्स ऑप्टिमाइझ करण्यावर लक्ष केंद्रित करून कॅनव्हास-आधारित ऍप्लिकेशन्ससाठी कार्यप्रदर्शन टिपा: स्मॅशिंग मासिक .