Canvas createImageData() 方法

定义和用法

createImageData() 方法创建新的空白 ImageData 对象。新对象的默认像素值 transparent black。

对于 ImageData 对象中的每个像素,都存在着四方面的信息,即 RGBA 值:

  • R - 红色 (0-255)
  • G - 绿色 (0-255)
  • B - 蓝色 (0-255)
  • A - alpha 通道 (0-255; 0 是透明的,255 是完全可见的)

因此 ,transparent black 表示 (0,0,0,0)。

color/alpha 以数组形式存在,并且既然数组包含了每个像素的四条信息,数组的大小是 ImageData 对象的四倍。(获得数组大小有更简单的办法,就是使用 ImageDataObject.data.length)

包含 color/alpha 信息的数组存储于 ImageData 对象的 data 属性中。

提示:在操作完成数组中的 color/alpha 信息之后,您可以使用 putImageData() ວິທິງຈະສ້າງຂໍ້ມູນພາບຄືກັບຂໍ້ມູນພາບມາສູ່ແຜ່ນບັນຈຸ.

ຕົວຢ່າງ:

ວິທິງວິທິບາຍນີ້ຈະປ່ຽນຕະລາງພາສາຫລັກທີໜຶ່ງຂອງ 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;

ຄວາມຄົນຄົນ

ສ້າງ ImageData ທີ່ 100*100 ຕະລາງພາສາຫລັກທີ່ແຕກບານທັງໝົດ ແລະ ບັນທຶກມາໃນແຜ່ນບັນຈຸ:

ບັນຊີບັນດາບານທີ່ພົບພາຍໃນ HTML5 canvas tag ບໍ່ສາມາດສະໜັບສະໜູນ.

JavaScript:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var imgData=ctx.createImageData(100,100);
for (var 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);

ການທົດລອງຄົນດຽວຂອງເຈົ້າ

ວິທິງວິທິບາຍ

ມີສອງຮູບແບບຂອງການ createImageData():

1. ສ້າງ ImageData ອີກບ່ອນໜຶ່ງທີ່ມີຂະໜາດທີ່ກໍານົດ (ຕາມຕະລາງພາສາຫລັກ):

var imgData=context.createImageData(width,height);

2. ສ້າງ ImageData ອີກບ່ອນໜຶ່ງທີ່ມີຂະໜາດຄືກັນກັບ ImageData ອີກບ່ອນໜຶ່ງທີ່ກໍານົດ (ຈະບໍ່ສ້າງຂໍ້ມູນພາບ):

var imgData=context.createImageData(imageData);

ຄູ່ມູນພຽງພໍ

ພຽງພໍ ການອະທິບາຍ
width ຄວາມວົງຂອງ ImageData ທີ່ມີຕາມຕະລາງພາສາຫລັກ.
height ຄວາມສູງຂອງ ImageData ທີ່ມີຕາມຕະລາງພາສາຫລັກ.
imageData ອີງຕາມ ImageData ອີກບ່ອນໜຶ່ງ.

浏览器支持

表中的数字注明了首个完全支持该属性的浏览器版本。

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
4.0 9.0 3.6 4.0 10.1

注释:Internet Explorer 8 以及更早的版本不支持 元素。