જાવાસ્ક્રિપ્ટ કેનવાસમાં માસ્ક્ડ ઇમેજ બોર્ડર્સને નિપુણ બનાવવું
મલ્ટીપલ પિક્ચર ફ્યુઝન એ JavaScript વિઝ્યુઅલ ઈફેક્ટ બનાવવાનું સામાન્ય પગલું છે. માસ્ક વડે છબીના દૃશ્યક્ષમ વિસ્તારોને વ્યાખ્યાયિત કરવી એ એક વારંવારની તકનીક છે. જો કે આ અનન્ય સ્વરૂપો બનાવવા માટે મદદરૂપ છે, તે માસ્ક કરેલા આકારોની આસપાસ સરહદ ઉમેરવાનું પડકારરૂપ હોઈ શકે છે. જોકે ધ 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' નો ઉપયોગ કરીને લાલ પર સેટ કરેલ છે. |
માસ્ક કરેલી છબી પર બોર્ડર કેવી રીતે લાગુ કરવી તે ઓળખવું
પૂરી પાડવામાં આવેલ સ્ક્રિપ્ટ્સનો ઉદ્દેશ્ય એક છબી માટે માસ્ક તરીકે અન્ય ચિત્રનો ઉપયોગ કરવાનો છે, અને પછી માસ્ક કરેલા આકારની આસપાસ કસ્ટમ બોર્ડર ઉમેરવા માટે. માસ્ક અને મુખ્ય ઇમેજ માટે ફંક્શનની શરૂઆતમાં બે નવી ઇમેજ ઑબ્જેક્ટ બનાવવામાં આવે છે. બાહ્ય સ્ત્રોતોમાંથી ફોટા લોડ કરતી વખતે, CORS ને કારણે સમસ્યાઓને રોકવા માટે ક્રોસ-ઓરિજિન સેટિંગ આવશ્યક છે. એક કેનવાસ બનાવવામાં આવે છે અને એકવાર બંને છબીઓ લોડ થઈ જાય પછી માસ્ક ઇમેજ સાથે મેળ કરવા માટે તેના પ્રમાણને સમાયોજિત કરવામાં આવે છે. આ ઇમેજ ડ્રોઇંગ દરમિયાન માપ બદલવાની સમસ્યાઓ ટાળે છે અને ખાતરી આપે છે કે કેનવાસ યોગ્ય વિસ્તાર સાથે કામ કરવા માટે તૈયાર છે.
સ્ક્રિપ્ટ પછી ઉપયોગ કરે છે કેનવાસ પર માસ્ક ઇમેજ દોરવાનું કાર્ય. આમ કરવાથી, માસ્કને કેનવાસ પર લાગુ કરવામાં આવે છે, જે માસ્કિંગ પ્રક્રિયા માટે પાયાના સ્તર તરીકે સેવા આપે છે. માસ્કને યોગ્ય રીતે લાગુ કરવા માટે વૈશ્વિક સંયુક્ત ઑપરેશન "સોર્સ-ઇન" પર સેટ હોવું આવશ્યક છે. કેનવાસને માસ્ક ઇમેજ સાથે સુસંગત હોય તેવા પ્રાથમિક ચિત્રના માત્ર વિસ્તારોને જાળવી રાખવા માટે સૂચના આપવામાં આવી છે. સારમાં, માસ્ક તે આકારને વ્યાખ્યાયિત કરે છે કે જેમાં મુખ્ય છબીને ક્લિપ કરવામાં આવે છે. જ્યારે આ ક્લિપિંગ એરિયાની અંદર મુખ્ય ચિત્ર દોરવામાં આવે ત્યારે સંયુક્ત ઑપરેશન "સોર્સ-ઓવર" પર રીસેટ થાય છે, અગાઉ ક્લિપ કરેલી સામગ્રીને અસર કર્યા વિના બોર્ડર પેઇન્ટિંગ જેવી વધારાની ક્રિયાઓને સક્ષમ કરે છે.
માસ્ક કરેલા આકાર પર બોર્ડર લાગુ કરવા માટેનો ઉપયોગ શામેલ છે ટેકનિક કેનવાસ પરનો ઉલ્લેખિત પાથ અથવા ફોર્મ આ આદેશ દ્વારા સૂચવવામાં આવે છે. બીજા સોલ્યુશનમાં, moveTo() અને lineTo()ને મેન્યુઅલી કેનવાસ પાથ જનરેટ કરવા અને માસ્કની સરહદો ટ્રેસ કરવા માટે જોડવામાં આવે છે. આ તકનીકોના ઉપયોગથી, તમે મેન્યુઅલી બોર્ડરના આકારનો ઉલ્લેખ કરી શકો છો અને ખાતરી કરો કે તે લંબચોરસ કેનવાસની સીમાને બદલે માસ્કના આકારને વળગી રહે છે. તમારી પાસે સરહદના દેખાવ પર સંપૂર્ણ નિયંત્રણ છે કારણ કે મિલકત સરહદની જાડાઈ અને મિલકત તેનો રંગ સેટ કરે છે.
છેલ્લે, toDataURL() ફંક્શનનો ઉપયોગ કેનવાસને Base64 સ્ટ્રિંગમાં રૂપાંતરિત કરવા માટે થાય છે. આમ કરવાથી, ફિનિશ્ડ ઈમેજ-માસ્ક અને બોર્ડરનો સમાવેશ થાય છે-એ ફોર્મેટમાં રૂપાંતરિત થાય છે જેનો પ્રોગ્રામના અન્ય વિસ્તારોમાં સહેલાઈથી ઉપયોગ થાય છે અથવા સર્વર પર અપલોડ થાય છે. સમયની ભૂલોને ટાળવા માટે, વચન એ સુનિશ્ચિત કરે છે કે આ કામગીરી ત્યારે જ સમાપ્ત થાય છે જ્યારે બંને ચિત્રો સંપૂર્ણપણે લોડ થઈ જાય. આ સ્ક્રિપ્ટો બતાવે છે કે કેવી રીતે જાવાસ્ક્રિપ્ટના કેનવાસ તત્વ સાથે ચોક્કસ રીતે મેળ ખાતી ગતિશીલ બોર્ડરને માસ્કિંગ અને લાગુ કરવા સહિતની અત્યાધુનિક ઇમેજ મોડિફિકેશન ટેકનિકને પૂર્ણ કરી શકાય છે.
પદ્ધતિ 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;
});
}
વિકલ્પ 2: કેનવાસ પાથનો ઉપયોગ કરીને માસ્ક આકારની આસપાસ કસ્ટમ બોર્ડર બનાવો
આ પદ્ધતિ ખાતરી કરે છે કે જાવાસ્ક્રિપ્ટ સાથે કેનવાસ 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';
// Create path for the mask shape
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(maskImg.width, 0);
ctx.lineTo(maskImg.width, maskImg.height);
ctx.lineTo(0, maskImg.height);
ctx.closePath();
ctx.lineWidth = 5; // Border thickness
ctx.strokeStyle = 'blue'; // Border color
ctx.stroke(); // Apply the border along the path
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 માં કસ્ટમ બૉર્ડર્સ સાથે માસ્ક કરેલી છબીઓને વધારવી
તમારી JavaScript એપ્લિકેશનના વપરાશકર્તા અનુભવને છબીઓને માસ્ક કરવાની અને કસ્ટમ બોર્ડર્સ સેટ કરવાની ક્ષમતા દ્વારા મોટા પ્રમાણમાં વધારી શકાય છે. . માસ્કિંગની મદદથી, તમે નક્કી કરી શકો છો કે ઇમેજના કયા ક્ષેત્રો દૃશ્યમાન છે તેના આધારે બીજી છબી, જેને માસ્ક તરીકે ઓળખવામાં આવે છે. માસ્ક્ડ ઝોનની આસપાસ બોર્ડર ઉમેરવી એ એક સમસ્યા છે જેનો ઘણા વિકાસકર્તાઓ સામનો કરે છે, ખાસ કરીને જ્યારે માસ્ક સીધો લંબચોરસ આકાર ન હોય. માસ્કની રૂપરેખા સાથે ચોક્કસ રીતે મેળ ખાતી બોર્ડર સાથેના પ્રોજેક્ટ વધુ સૌમ્ય અને નિષ્ણાત દેખાશે.
આ સમસ્યાનો ઉપયોગી ઉકેલ કેનવાસ API નો ઉપયોગ કરવો છે પદાર્થ તમે Path2D નો ઉપયોગ તમારા માસ્કના રૂપરેખાને બંધબેસતા જટિલ માર્ગો ડિઝાઇન કરવા માટે કરી શકો છો અને પછી તેમને સરહદથી ઘેરી શકો છો. આ પદ્ધતિ તમને પરંપરાગત લંબચોરસની બહાર જઈને, તમારા કસ્ટમ માસ્કના ખૂણાઓ સાથે ચોક્કસ રીતે મેળ ખાતી સરહદો જનરેટ કરવાની મંજૂરી આપે છે. ઉપયોગ કરીને અને એકસાથે માસ્કની રૂપરેખાને ટ્રેસ કરવાનું સરળ બનાવે છે અને ચોક્કસ રીતે ગોઠવાયેલ સરહદની ખાતરી આપે છે.
કાર્યક્ષમતા એ ધ્યાનમાં લેવાનું બીજું મહત્વનું પરિબળ છે, ખાસ કરીને જ્યારે મોટી છબીઓ સાથે કામ કરતી વખતે અથવા રીઅલ-ટાઇમમાં ગતિશીલ રીતે સરહદો લાગુ કરતી વખતે. માસ્ક કરેલા ચિત્રને કેશ કરવા, ડ્રોઇંગની કામગીરીમાં ઘટાડો અને કેનવાસ રેન્ડરીંગ પ્રક્રિયાને સુવ્યવસ્થિત કરવા જેવી વ્યૂહરચનાઓનો ઉપયોગ કરીને તમારી એપ્લિકેશનની ઝડપને સુધારી શકાય છે. જટિલ અથવા ઉચ્ચ-પ્રદર્શન સેટિંગ્સમાં પણ, તમે ગેરેંટી આપી શકો છો કે માસ્કિંગ અને બોર્ડર-ડ્રોઇંગ પ્રક્રિયાઓ અર્થહીન ક્રિયાઓને ઘટાડીને સરળતાથી ચાલે છે.
- JavaScript માં, હું બીજી ઇમેજને માસ્ક કરવા માટે કેવી રીતે ઉપયોગ કરી શકું?
- ઉપયોગ કરીને પર સેટ કરો , નો ઉપયોગ કરીને છબીને માસ્ક કરવા માટે કેનવાસ પર માસ્ક દોરો . માસ્ક સાથે મેળ કરવા માટે, આ પ્રાથમિક છબીને કાપશે.
- હું કેવી રીતે માસ્ક કરેલી છબીની સરહદ બનાવી શકું જે તેના આકારને અનુરૂપ હોય?
- સાથે માસ્કનો માર્ગ સ્થાપિત કર્યા પછી અને , નો ઉપયોગ કરો ટેકનિક આ તમને વ્યક્તિગત કિનારી સાથે માસ્કના આકારને ઘેરી લેવા દેશે.
- નો હેતુ શું છે કેનવાસ મેનીપ્યુલેશનમાં?
- કેનવાસની સામગ્રી બેઝ 64-એનકોડેડ ઈમેજમાં રૂપાંતરિત થાય છે ફંક્શન, PNG ઇમેજ તરીકે વાપરવા અથવા વિતરિત કરવા માટે સરળ બનાવે છે.
- હું પ્રદર્શન માટે કેનવાસ કામગીરીને કેવી રીતે ઑપ્ટિમાઇઝ કરી શકું?
- ડ્રોઇંગ કામગીરીની માત્રામાં ઘટાડો કરો અને કેનવાસની ઝડપ વધારવા માટે સામાન્ય રીતે ઉપયોગમાં લેવાતા તત્વોને સંગ્રહિત કરવા વિશે વિચારો. આ તમારી એપ્લિકેશનને સરળ રીતે કાર્ય કરે છે અને ફરીથી દોરવાની સંખ્યા ઘટાડે છે.
- શું હું કેનવાસમાં ક્રોસ-ઓરિજિન છબીઓ લોડ કરી શકું?
- હા, પરંતુ CORS મુશ્કેલીઓ ઊભી કર્યા વિના છબી ઉપલબ્ધ કરાવવા માટે, તમારે સેટ કરવાની જરૂર છે માટે મિલકત .
JavaScript એપ્લિકેશન્સમાં, છબીઓને માસ્ક કરવી અને કેનવાસમાં કસ્ટમ બોર્ડર્સ લાગુ કરવી એ પોલિશ્ડ વિઝ્યુઅલ એલિમેન્ટ્સ બનાવવાની અસરકારક રીત છે. વિકાસકર્તાઓ પાસે આનો ઉપયોગ કરીને ચિત્રોના રેન્ડરિંગ અને સ્ટાઇલમાં હેરફેર કરવાની ક્ષમતા હોય છે. અને અત્યાધુનિક ડ્રોઇંગ આદેશો જેમ કે અને પાથની વ્યાખ્યાઓ.
બોર્ડર અને માસ્કિંગ ઑપરેશનને કાળજીપૂર્વક ઑપ્ટિમાઇઝ કરીને, ખાસ કરીને મોટા ફોટા માટે સરળ કામગીરી સુનિશ્ચિત કરવામાં આવે છે. આ ટ્યુટોરીયલ બિન-લંબચોરસ ઈમેજીસની આસપાસ ડાયનેમિકલી પેઈન્ટીંગ બોર્ડર્સ માટે એક ઉપયોગી પદ્ધતિ પ્રદાન કરે છે, જે ઓનલાઈન એપ્સ વિકસાવતી વખતે ઉપયોગી છે જે સૌંદર્યલક્ષી રીતે આનંદદાયક અને પ્રતિભાવ આપતી હોય.
- ઉપયોગ પર વિગતવાર માર્ગદર્શિકા ચિત્રો અને માસ્કની હેરફેર કરવા માટે, જેમ કે ડ્રોઇંગ ઓપરેશન્સ સહિત અને : MDN વેબ દસ્તાવેજ .
- જાવાસ્ક્રિપ્ટમાં ઇમેજ માસ્કિંગ અને ક્રોસ-ઓરિજિન સંસાધનોને કેવી રીતે હેન્ડલિંગ કરવું તે અંગે વ્યાપક સમજૂતી: HTML5 કેનવાસ ટ્યુટોરિયલ્સ .
- ઇમેજ રેન્ડરિંગ અને ડ્રોઇંગ ઑપરેશનને ઑપ્ટિમાઇઝ કરવા પર ધ્યાન કેન્દ્રિત કરીને કૅનવાસ-આધારિત ઍપ્લિકેશનો માટે પ્રદર્શન ટિપ્સ: સ્મેશિંગ મેગેઝિન .