التوصيات للدورة
طريقة Canvas getImageData()
تعريف و استخدام
getImageData()
يستعيد الطريقة كائن ImageData يحتوي على بيانات بكسلات دائرة معينة على اللوحة.
- للبكسل في كائن ImageData، هناك معلومات أربعة، وهي قيم RGBA:
- R - الأحمر (0-255)
- G - الأخضر (0-255)
- B - الأزرق (0-255)
A - قناة الألفا (0-255; 0 هو شفاف، 255 هو مرئي بالكامل) تخزن معلومات لون/ألفا كنوع مجموعة وتخزن في كائن ImageData. الخصائص.
نصيحة:بعد إكمال عمليات التغيير على معلومات لون/ألفا في المجموعة، يمكنك استخدام putImageData() يُنسخ بيانات الصورة إلى لوحة الرسم.
مثال:
التالي هو رمز للحصول على معلومات لون/ألفا للبكسل الأول في الكائن ImageData الم返回:
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
نصيحة:يمكنك أيضًا استخدام طريقة getImageData() لتغيير لون كل بكسل في صورة معينة على لوحة الرسم.
استخدم هذه الصيغة لتدوير جميع البكسلات وتغيير قيم لونها:
red=255-old_red; green=255-old_green; blue=255-old_blue;
يرجى الرجوع إلى المثال الموضح أدناه "تجربة شخصية".
مثال
مثال 1
هذا الكود ينسخ بيانات البكسل في منطقة معينة من اللوحة باستخدام getImageData()، ثم يضع البيانات مرة أخرى على اللوحة باستخدام putImageData():
var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.fillStyle = "red"; ctx.fillRect(10, 10, 50, 50); function copy() { var imgData = ctx.getImageData(10, 10, 50, 50); ctx.putImageData(imgData, 10, 70); }
نصيحة:تقدم الأمثلة الإضافية في أسفل الصفحة.
النحو
var imgData = context.getImageData(x,y,width,height);
قيمة المتغيرات
المتغيرات | الوصف |
---|---|
x | الإحداثيات الـ x للركن الأيسر العلوي للنسخ. |
y | الإحداثيات الـ y للركن الأيسر العلوي للنسخ. |
width | عرض المنطقة المعدة للنسخ. |
height | ارتفاع المنطقة المعدة للنسخ. |
مزيد من الأمثلة
مثال 2
الصورة التي ستستخدمها:

استخدم getImageData() لعكس لون كل بكسل في الصورة على اللوحة.
JavaScript:
var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); var img = document.getElementById("tulip"); ctx.drawImage(img, 0, 0); var imgData=ctx.getImageData(0, 0, c.width, c.height); // عكس الألوان for (var 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);
دعم المتصفح
الرقم في الجدول يشير إلى إصدار المتصفح الذي يدعم هذه الخاصية بشكل كامل.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
ملاحظة:Internet Explorer 8 وأقدم إصداراته لا تدعم عنصر <canvas>.