جاوا اسکرپٹ کینوس میں ماسکڈ امیج بارڈرز میں مہارت حاصل کرنا
جاوا اسکرپٹ کے بصری اثرات کی تخلیق میں ایک سے زیادہ تصویر کا فیوژن ایک عام قدم ہے۔ ماسک کے ساتھ تصویر کے دیکھنے کے قابل علاقوں کی وضاحت کرنا ایک بار بار کی تکنیک ہے۔ اگرچہ یہ منفرد شکلیں بنانے کے لیے مددگار ہے، لیکن ان نقاب پوش شکلوں کے گرد بارڈر شامل کرنا مشکل ہو سکتا ہے۔ اگرچہ کینوس جاوا اسکرپٹ میں عنصر وسیع پیمانے پر تصویری ہیرا پھیری کی پیشکش کرتا ہے، اس تصویر کے ارد گرد سرحد کو ایڈجسٹ کرنا آسان نہیں ہے جسے ماسک کیا گیا ہے۔
ڈویلپرز ماسک لگا سکتے ہیں اور تصویروں کو کلپ کر سکتے ہیں۔ کینوس APIاگرچہ پہلے سے طے شدہ طور پر، کوئی بھی بارڈر تیار کیا جاتا ہے جو کینوس کی مستطیل شکل سے مماثل ہوتا ہے۔ جب آپ ایک ایسی سرحد بنانا چاہتے ہیں جو ایک پیچیدہ شکل کے کناروں سے مماثل ہو جس کی وضاحت ماسک کے ذریعے کی گئی ہو، تو یہ ایک مسئلہ پیش کرتا ہے۔ مقصد سیدھی مستطیل سرحد سے آگے ماسک کے عین سفر کی پیروی کرنا ہے۔
یہ پوسٹ وضاحت کرے گی کہ جاوا اسکرپٹ میں تصویری ماسک کو کیسے لاگو کیا جائے اور مزید اہم بات یہ ہے کہ یہ کیسے یقینی بنایا جائے کہ نقاب پوش تصویر کی الگ شکل ایک بارڈر سے گھری ہوئی ہے۔ مزید برآں، ہم ایک ایسے فنکشن پر جائیں گے جو ماسکنگ کو مکمل کرتا ہے لیکن اس کے پاس ابھی تک کوئی متعین بارڈر حل نہیں ہے۔
آپ کینوس میں کمپوزٹ آپریشنز کے ساتھ کام کرنے کا طریقہ سیکھ کر بارڈر کی ظاہری شکل کو ٹھیک کر سکتے ہیں۔ آئیے شروع کریں اور دیکھیں کہ کس طرح جاوا اسکرپٹ کی کینوس کی خصوصیات کو استعمال کرتے ہوئے ایک نقاب پوش تصویر کے گرد ضروری بارڈر شامل کرنا ہے۔
حکم | استعمال کی مثال |
---|---|
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 سٹرنگ میں تبدیل کرنے کے لیے استعمال کیا جاتا ہے۔ ایسا کرنے سے، تیار شدہ تصویر — ماسک اور بارڈر شامل — کو ایک فارمیٹ میں تبدیل کر دیا جاتا ہے جسے پروگرام کے دیگر شعبوں میں آسانی سے استعمال کیا جاتا ہے یا سرور پر اپ لوڈ کیا جاتا ہے۔ وقت کی غلطیوں سے بچنے کے لیے، وعدہ اس بات کو یقینی بناتا ہے کہ یہ آپریشن صرف اس وقت ختم ہوتا ہے جب دونوں تصویریں مکمل طور پر لوڈ ہو جائیں۔ یہ اسکرپٹ دکھاتے ہیں کہ تصویر میں ترمیم کرنے کی جدید ترین تکنیکیں، بشمول ماسکنگ اور ایک متحرک بارڈر جو ماسک کی شکل سے بالکل مماثل ہے، کو JavaScript کے کینوس عنصر کے ساتھ پورا کیا جا سکتا ہے۔
طریقہ 1: نقاب پوش تصویر میں حسب ضرورت بارڈر شامل کرنے کے لیے کینوس اور اسٹروک کا طریقہ استعمال کرنا
نقاب پوش تصویر کے گرد بارڈر بنانے کے لیے، یہ طریقہ جاوا اسکرپٹ اور کینوس 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 ایپلیکیشن کے صارف کے تجربے کو تصاویر کو ماسک کرنے اور اپنی مرضی کے مطابق سرحدیں سیٹ کرنے کی صلاحیت سے بہت زیادہ بڑھایا جا سکتا ہے۔ کینوس API. ماسکنگ کی مدد سے، آپ یہ فیصلہ کر سکتے ہیں کہ کسی تصویر کے کون سے حصے نظر آتے ہیں جو کہ کسی دوسری تصویر پر منحصر ہے، جسے ماسک کہا جاتا ہے۔ ماسکڈ زون کے ارد گرد ایک بارڈر شامل کرنا ایک ایسا مسئلہ ہے جس کا سامنا بہت سے ڈویلپرز کو ہوتا ہے، خاص طور پر جب ماسک سیدھی مستطیل شکل کا نہیں ہوتا ہے۔ سرحدوں والے پروجیکٹ جو ماسک کے خاکہ سے بالکل مماثل ہوں گے وہ زیادہ چمکدار اور ماہر نظر آئیں گے۔
اس مسئلے کا ایک مفید حل Canvas API استعمال کرنا ہے۔ پاتھ 2 ڈی اعتراض آپ Path2D کا استعمال ایسے پیچیدہ راستوں کو ڈیزائن کرنے کے لیے کر سکتے ہیں جو آپ کے ماسک کی شکل میں فٹ ہوں اور پھر ان کو بارڈر سے گھیر لیں۔ یہ طریقہ آپ کو روایتی مستطیلوں سے آگے بڑھ کر بارڈرز بنانے کی اجازت دیتا ہے جو آپ کے کسٹم ماسک کے کونوں سے بالکل مماثل ہیں۔ استعمال کرنا moveTo() اور lineTo() ایک ساتھ مل کر ماسک کی خاکہ کو ٹریس کرنا آسان بناتا ہے اور ایک بارڈر کی ضمانت دیتا ہے جو بالکل ٹھیک سیدھ میں ہو۔
کارکردگی ایک اور اہم عنصر ہے جس کو مدنظر رکھا جائے، خاص طور پر جب بڑی تصاویر کے ساتھ کام کرنا ہو یا ریئل ٹائم میں متحرک طور پر بارڈرز لگائیں۔ نقاب پوش تصویر کو کیش کرنے، ڈرائنگ کے کاموں کو کم کرنے، اور کینوس کے رینڈرنگ کے عمل کو ہموار کرنے جیسی حکمت عملیوں کو استعمال کرکے آپ کی درخواست کی رفتار کو بہتر بنایا جا سکتا ہے۔ یہاں تک کہ پیچیدہ یا اعلی کارکردگی کی ترتیبات میں بھی، آپ اس بات کی ضمانت دے سکتے ہیں کہ ماسکنگ اور بارڈر ڈرائنگ کے طریقہ کار بے مقصد کاموں کو کم کرکے آسانی سے چلتے ہیں۔
کینوس کا استعمال کرتے ہوئے ماسکنگ اور بارڈرنگ امیجز کے بارے میں اکثر پوچھے جانے والے سوالات
- جاوا اسکرپٹ میں، میں کسی دوسری تصویر کو ماسک کرنے کے لیے کیسے استعمال کر سکتا ہوں؟
- استعمال کرنا 2 پر سیٹ کریں 'source-in'، کا استعمال کرتے ہوئے ایک تصویر کو ماسک کرنے کے لیے کینوس پر ماسک کھینچیں۔ کینوس API. ماسک سے ملنے کے لیے، یہ بنیادی تصویر کو تراشے گا۔
- میں ایک نقاب پوش تصویر کی بارڈر کیسے بنا سکتا ہوں جو اس کی شکل کے مطابق ہو؟
- کے ساتھ ماسک کا راستہ قائم کرنے کے بعد moveTo() اور lineTo()، استعمال کریں۔ stroke() تکنیک یہ آپ کو ماسک کی شکل کو ذاتی نوعیت کے بارڈر کے ساتھ گھیرنے دے گا۔
- کا مقصد کیا ہے toDataURL() کینوس ہیرا پھیری میں؟
- کینوس کے مواد کو بیس 64 انکوڈ شدہ امیج میں کے ذریعے تبدیل کیا جاتا ہے۔ toDataURL() فنکشن، PNG امیج کے بطور استعمال یا تقسیم کرنا آسان بناتا ہے۔
- میں کارکردگی کے لیے کینوس آپریشنز کو کیسے بہتر بنا سکتا ہوں؟
- ڈرائنگ آپریشنز کی مقدار کو کم کریں اور کینوس کی رفتار کو زیادہ سے زیادہ کرنے کے لیے عام طور پر استعمال ہونے والے عناصر کو ذخیرہ کرنے کے بارے میں سوچیں۔ یہ آپ کی ایپلیکیشن کو آسانی سے کام کرتا رہتا ہے اور دوبارہ ڈرا کی تعداد کو کم کرتا ہے۔
- کیا میں کراس اوریجن امیجز کو کینوس میں لوڈ کر سکتا ہوں؟
- ہاں، لیکن CORS مشکلات پیدا کیے بغیر تصویر کو دستیاب کرنے کے لیے، آپ کو سیٹ کرنا ہوگا۔ crossOrigin جائیداد کو 'anonymous'.
ماسکنگ اور بارڈرز پر حتمی خیالات
JavaScript ایپس میں، تصاویر کو ماسک کرنا اور کینوس میں حسب ضرورت بارڈرز لگانا چمکدار بصری عناصر بنانے کا ایک مؤثر طریقہ ہے۔ ڈویلپرز کو استعمال کرکے تصویروں کی رینڈرنگ اور اسٹائل میں ہیرا پھیری کرنے کی صلاحیت ہے کینوس API اور نفیس ڈرائنگ کمانڈز جیسے اسٹروک() اور راستے کی تعریفیں
ہموار کارکردگی کو احتیاط سے بارڈر اور ماسکنگ آپریشنز کو بہتر بنا کر یقینی بنایا جاتا ہے، خاص طور پر بڑی تصاویر کے لیے۔ یہ ٹیوٹوریل غیر مستطیل امیجز کے گرد بارڈرز کو متحرک طور پر پینٹ کرنے کے لیے ایک مفید طریقہ فراہم کرتا ہے، جو آن لائن ایپس کو تیار کرتے وقت کارآمد ہوتا ہے جو جمالیاتی طور پر خوشنما اور جوابدہ ہوں۔
کینوس میں ماسکنگ اور بارڈر تکنیک کے حوالے
- استعمال کرنے کے بارے میں تفصیلی گائیڈ کینوس API تصاویر اور ماسک میں ہیرا پھیری کرنا، بشمول ڈرائنگ آپریشنز جیسے 4 اور 2: MDN ویب دستاویزات .
- جاوا اسکرپٹ میں امیج ماسکنگ اور کراس اوریجن ریسورسز کو ہینڈل کرنے کے طریقہ کی جامع وضاحت: HTML5 کینوس ٹیوٹوریلز .
- کینوس پر مبنی ایپلی کیشنز کے لیے پرفارمنس ٹپس، امیج رینڈرنگ اور ڈرائنگ آپریشنز کو بہتر بنانے پر توجہ مرکوز کرتے ہوئے: مسمار کرنے والا میگزین .