دراين صفحه درارتباط با ترسيم تصوير، اديو و بوم بر روي عنصر<canva> مطالبي ارائه ميگردد .متدها و ويژگي هاي مرتبط براي ترسيم هركدام دربخش داخلي صفحه ،تشريح ميشوند كه لينك هر كدام درجدول زير آمده است.
متد ها و ويژگي تصويري روي عنصر بوم مطابق جدول زيراست.
متد يا ويژگي | شرح |
---|---|
drawImage() | تصوير، ويدئو و يا بوم را دريك بوم ترسيم ميكند. |
createImageData() | يك شئ جديد وخاليImageData ايجاد ميكند. |
getImageData() | يك شئImageData رابرگشت ميدهد، و داده هاي پيكسلي براي مستطيل بوم كپي ميشود. |
ImageData.data | شئي را برگشت ميدهد كه حاوي داده هاي تصويري يك شئImageData مشخص شده است. |
ImageData.height | ارتفاع يك شئImageDate رابرگشت ميدهد . |
ImageData.width | عرض يك شئImageData رابرگشت ميدهد. |
putImageData() | داده هاي تصويري از شئImageData مشخص را برروي بوم برميگرداند. |
متدdrawImage() يك تصوير، ويدئو ويا بوم را در يك عنصر <canvas> ترسيم ميكند .همچنين متد فوق ميتواند قسمتي ازتصوير را هم ترسيم كند، يا اندازه تصوير را افزايش ويا كاهش دهد.
مثال ـ ترسيم يك تصوير روي بوم .تصوير مورد استفاده را پس ازاجرا مشاهده ميكنيد .با كليك در tryitتصوير به بوم منتقل ميشود .
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); const img = document.getElementById("scream"); ctx.drawImage(img, 10, 10);
اين متد در دو فرمت زير بكار گرفته ميشود.
دومين مورد فوق ،قسمتي از تصوير(Clip) در بوم ترسيم ميشود .
پارامتر | شرح |
---|---|
img | براي ترسيم در بوم ، تصوير يا ويدئو ويا بوم را مشخص ميكند. |
sx | اختياري و از كجاي مختصات افقي برش انجام شود. |
sy | اختياري و از كجاي مختصات عمودي برش انجام شود. |
swidth | عرض برش رامشخص ميكند. |
sheight | ارتفاع برش را مشخص ميكند. |
x | دركجاي مختصات افقي بوم قرار گيرد. |
y | دركجاي مختصات عمودي بوم قرار گيرد. |
width | اختياري: عرض تصوير مورد اسنفاده
تصوير كشيده يا كاهش ميدهد. |
height | اختياري: ارتفاع تصوير مورد اسنفاده
ارتفاع كشيده يا كاهش مي يابد. |
مثال ـ تصوير با عرض وارتفاع مشخص روي بوم قرار ميگيرد .با اجرا تصوير مورد استفاده را مشاهده ميكنيد .با كليك روي دكمهtryit تصوير با تغيير ابعاد روي بوم ترسيم ميشود .
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); const img = document.getElementById("scream"); ctx.drawImage(img, 10, 10, 150, 180);
مثال ـ تصوير رابريده و روي بوم قرار ميدهد . اولين تصوير ، تصوير مورد استفاده وClip آنرا دربوم مشاهده كنيد.
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); const img = document.getElementById("scream"); ctx.drawImage(img, 90, 130, 50, 60, 10, 10, 50, 60);
مثال ـ قرار دادن ويدئو در بوم
const video = document.getElementById("video1"); const canvas = document.getElementById("myCanvas"); ctx = canvas.getContext('2d'); v.addEventListener('play', function() {var i = window.setInterval(function() {ctx.drawImage(v, 5, 5, 260, 125)}, 20);}, false); video.addEventListener('pause', function() {window.clearInterval(i);}, false); video.addEventListener('ended', function() {clearInterval(i);}, false);
متدcreateImageData() يك شئ خالي جديدImageData ايجاد ميكند .مقادير پيكسل شئ جديد مشكي شفاف استRGBA(0,0,0,0):
مثال ـ ايجاد يك شئImageData با ابعاد 100*100 پيكسل با رنك قرمز براي هر پيكسل
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); const imgData = ctx.createImageData(100, 100); for (let i = 0; i < imgData.data.length; i += 4) { imgData.data[i+0] = 255; imgData.data[i+1] = 0; imgData.data[i+2] = 0; imgData.data[i+3] = 255; } ctx.putImageData(imgData, 10, 10);
براي هرپيكسل شئImageData چهار آيتم اطلاعاتي وجود دارد .آنها مقاديرRGBA هستند :
اطلاعات مربوط بهcolor/alpha درآرايه اي بطول 4*width*height نگهداري ميشود، كهheight,width عرض وارتفاع شئ ImageData ميباشد .
آرايه فوق حاوي اطلاعاتcolor/alpha بوده كه در ويژگي data شئ ImageData ذخيره ميشود.
مثال ـ تنظيم رنگ اولين پيكسل شئImageData به قرمز
imgData = ctx.createImageData(100, 100); imgData.data[0] = 255; imgData.data[1] = 0; imgData.data[2] = 0; imgData.data[3] = 255;
مثال ـ تنظيم رنگ دومين پيكسل شئImageData به سبز
imgData = ctx.createImageData(100, 100); imgData.data[4] = 0; imgData.data[5] = 255; imgData.data[6] = 0; imgData.data[7] = 255;
دو نسخه ازcreateImageData() براي ايجاد شئ داده تصويري وجود دارد :
1ـ شئnew ImageData باابعاد مشخص ايجاد ميكند .
ـ شئnew ImageData را مشابه با شئ ديگر ايجاد مي نمايد .ابعاد شئ مانند هم بوده ولي كپي آن نيست.
پارامتر | شرح |
---|---|
width | عرض شئimageData به پيكسل |
height | ارتفاع شئimageData به پيكسل |
imageData | نام شئ ديگرimageData |
پارامتر | شرح |
---|---|
x | مختصات افقيx گوشه بالائي سمت چپ، نقطه شروع كپي |
y | مختصات عموديy گوشه بالائي سمت چپ، نقطه شروع كپي |
width | عرض ناحيه مستطيلي براي كپي |
height | ارتفاع ناحيه مستطيلي براي كپي |
برگشتي متد يكد شئ ازنوعImageData است .
مثال ـ ايجاد تصويري جديد ازمعكوس نمودن رنگ هر پيكسل تصوير.مشخص
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); const img = document.getElementById("scream"); ctx.drawImage(img, 0, 0); const imgData = ctx.getImageData(0, 0, c.width, c.height); // invert colors for (let i = 0; i < imgData.data.length; i += 4) { imgData.data[i] = 255-imgData.data[i]; imgData.data[i+1] = 255-imgData.data[i+1]; imgData.data[i+2] = 255-imgData.data[i+2]; imgData.data[i+3] = 255; } ctx.putImageData(imgData, 0, 0);
مثال ـ يك شئImageData بابعاد 100*100/bdi> پيكسل وقرمز رنگ ايجاد ميشود .
const c = document.getElementById("myCanvas"); const ctx = c.getContext("2d"); const imgData = ctx.createImageData(100, 100); for (let i = 0; i < imgData.data.length; i += 4) { imgData.data[i+0] = 255; imgData.data[i+1] = 0; imgData.data[i+2] = 0; imgData.data[i+3] = 255; } ctx.putImageData(imgData, 10, 10);
ويژگيdata يك شئ رابرگشت ميدهد كه حاوي داده هاي تصويري يك شئ ImageDataاست .براي هر پيكسل در شئImageData چهار آيتم اطلاعاتي براي رنگRGBA وجود دارد، كه مقادير آن نگهداري ميشود .مطاق زير:
اطلاعات مربوط بهcolor/alpha درآرايه اي بطول 4*width*height نگهداري ميشود، كهheight,width عرض وارتفاع شئ ImageData ميباشد .
imgData = ctx.createImageData(100, 100); imgData.data[0] = 255; imgData.data[1] = 0; imgData.data[2] = 0; imgData.data[3] = 255;
imgData = ctx.createImageData(100, 100); imgData.data[4] = 0; imgData.data[5] = 255; imgData.data[6] = 0; imgData.data[7] = 255;
ويژگيheight شئ داده تصويري ارتفاع آن را برحسب پيكسل برگشت ميدهد .
مثال ـ دريافت ارتفاع يك شئImageData
let height = imgData.height;
ويژگيwidth شئ داده تصويري عرض آن را برحسب پيكسل برگشت ميدهد.
مثال ـ دريافت عرض يك شئImageData
let width = imgData.width;
متدputImageData() داده هاي تصوير از يك شئ ImageData مشخص را بر روي بوم قرار ميدهد.
مثال ـ كپي داده هاي پيكسلي يك مستطيل باetImageData() وقراردادن آن با متدptImageData() در بوم
const canvas = document.getElementById("myCanvas"); const ctx = canvas.getContext("2d"); ctx.fillStyle = "red"; ctx.fillRect(10, 10, 50, 50); function copy() { const imgData = ctx.getImageData(10, 10, 50, 50); ctx.putImageData(imgData, 10, 70); }
مثال ـ نمونه مستطيل رنگ شياري مورب
j=0; const c = document.getElementById("myCanvas"); const ctx = c.getContext("2d"); const imgData = ctx.createImageData(100, 100); j=0; for (let i = 0; i < imgData.data.length; i += 4) { if (j<5) {imgData.data[i+0] =255; j+=1;} else if (j<10) {imgData.data[i+0] = 125; j+=1;} else {imgData.data[i+0] =255; j=0;} imgData.data[i+1] = 0; imgData.data[i+2] = 0; imgData.data[i+3] = 255; } ctx.putImageData(imgData, 10, 10);
پارامتر | شرح |
---|---|
imgData | شئImagData كه در context گذاشته ميشود . |
x | مختصات افقي شروع تصوير |
y | مختصات عمودي شروع تصوير |
dirtyX | اختياري ـ مختصات افقي انتقال پيش فرض0> |
dirtyY | اختياري ـ مختصات عمودي انتقال پيش فرض0> |
dirtyWidth | اختياري ـ عرض مورد انتقال .پيش فرض عرض تصوير |
dirtyHight | اختياري ـ ارتفاع مورد انتقال .پيش فرض ارتفاع تصوير |