HTML canvas getImageData() 方法
定义和用法
getImageData()
方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。
对于 ImageData 对象中的每个像素,都存在着四方面的信息,即 RGBA 值:
- R - 红色 (0-255)
- G - 绿色 (0-255)
- B - 蓝色 (0-255)
- A - alpha 通道 (0-255; 0 是透明的,255 是完全可见的)
color/alpha 以数组形式存在,并存储于 ImageData 对象的 data 属性中。
Tahadhari:在操作完成数组中的 color/alpha 信息之后,您可以使用 putImageData() 方法将图像数据拷贝回画布上。
例子:
以下代码可获得被返回的 ImageData 对象中第一个像素的 color/alpha 信息:
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
Tahadhari:您也可以使用 getImageData() 方法来反转画布上某个图像的每个像素的颜色。
Tumia msingi huu kumtaarifu kila rangi kwenye mizuri ya kichwa cha kati kwa kumwambia thamani za rangi:
red=255-old_red; green=255-old_green; blue=255-old_blue;
(Tazama mifano ya ‘Mfano kwa michezo’ hapa chini。)
Mfano
Mfano 1
Maktaba hizi ya chini inachukua data ya rangi ya kipengele cha kichwa cha kati kwenye eneo la kipengele cha kichwa cha kati kwa kutumia getImageData() na inapokaa kwenye kichwa cha kati cha picha kwa kutumia 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); }
Tahadhari:Mafano mengi inapatikana kwenye mabaki ya ukurasa.
Inasikia
var imgData=context.getImageData(x,y,width,height);
Makusanyiko ya thamani
Makusanyiko | Kueleza |
---|---|
x | Kina cha yote cha eneo la kubadilika la kipengele cha kichwa cha kati kwa koordinate ya x. |
y | Kina cha yote cha eneo la kubadilika la kipengele cha kichwa cha kati kwa koordinate ya y. |
width | Ukubwa wa eneo la kubadilika la kipengele cha kichwa cha kati. |
height | Ukubwa wa eneo la kubadilika la kipengele cha kichwa cha kati. |
Mafano mengi
Mfano 2
Tumia picha:

Tumia getImageData() kichukua rangi ya mizuri wa kila rangi kwenye picha ya kichwa cha kati.
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); // kichukua rangi 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);
Makampuni ya vyenginevu
Inafikia viwango vya vyenginevu vya kwanza ambavyo vinahakikisha uwanja huo.
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
4.0 | 9.0 | 3.6 | 4.0 | 10.1 |
Tahadhari:Internet Explorer 8 na vyenginevu vya vifupi hawakubali elementi ya <canvas>.