HTML5 canvas getImageData() ·½·¨
ʵÀý
ÏÂÃæµÄ´úÂëͨ¹ý 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);
}
ä¯ÀÀÆ÷Ö§³Ö
Internet Explorer 9¡¢Firefox¡¢Opera¡¢Chrome ÒÔ¼° Safari Ö§³Ö getImageData() ·½·¨¡£
×¢ÊÍ£ºInternet Explorer 8 »ò¸üÔçµÄä¯ÀÀÆ÷²»Ö§³Ö <canvas> ÔªËØ¡£
¶¨ÒåºÍÓ÷¨
getImageData() ·½·¨·µ»Ø ImageData ¶ÔÏ󣬸öÔÏó¿½±´ÁË»²¼Ö¸¶¨¾ØÐεÄÏñËØÊý¾Ý¡£
¶ÔÓÚ ImageData ¶ÔÏóÖеÄÿ¸öÏñËØ£¬¶¼´æÔÚ×ÅËÄ·½ÃæµÄÐÅÏ¢£¬¼´ RGBA Öµ£º
- R - ºìÉ« (0-255)
- G - ÂÌÉ« (0-255)
- B - À¶É« (0-255)
- A - alpha ͨµÀ (0-255; 0 ÊÇ͸Ã÷µÄ£¬255 ÊÇÍêÈ«¿É¼ûµÄ)
color/alpha ÒÔÊý×éÐÎʽ´æÔÚ£¬²¢´æ´¢ÓÚ ImageData ¶ÔÏóµÄ data ÊôÐÔÖС£
Ìáʾ£ºÔÚ²Ù×÷Íê³ÉÊý×éÖÐµÄ color/alpha ÐÅÏ¢Ö®ºó£¬Äú¿ÉÒÔʹÓà putImageData() ·½·¨½«Í¼ÏñÊý¾Ý¿½±´»Ø»²¼ÉÏ¡£
Àý×Ó£º
ÒÔÏ´úÂë¿É»ñµÃ±»·µ»ØµÄ ImageData ¶ÔÏóÖеÚÒ»¸öÏñËØµÄ color/alpha ÐÅÏ¢£º
red=imgData.data[0]; green=imgData.data[1]; blue=imgData.data[2]; alpha=imgData.data[3];
Ìáʾ£ºÄúÒ²¿ÉÒÔʹÓà getImageData() ·½·¨À´·´×ª»²¼ÉÏij¸öͼÏñµÄÿ¸öÏñËØµÄÑÕÉ«¡£
ʹÓøù«Ê½±éÀúËùÓеÄÏñËØ£¬²¢¸Ä±äÆäÑÕɫֵ£º
red=255-old_red; green=255-old_green; blue=255-old_blue;
£¨Çë¼ûÏÂÃæµÄ¡°Ç××ÔÊÔÒ»ÊÔ¡±ÊµÀý¡££©
JavaScript Óï·¨
var imgData=context.getImageData(x,y,width,height);
²ÎÊýÖµ
²ÎÊý | ÃèÊö |
---|---|
x | ¿ªÊ¼¸´ÖƵÄ×óÉϽÇλÖÃµÄ x ×ø±ê¡£ |
y | ¿ªÊ¼¸´ÖƵÄ×óÉϽÇλÖÃµÄ y ×ø±ê¡£ |
width | ½«Òª¸´ÖƵľØÐÎÇøÓòµÄ¿í¶È¡£ |
height | ½«Òª¸´ÖƵľØÐÎÇøÓòµÄ¸ß¶È¡£ |
¸ü¶àʵÀý
ҪʹÓõÄͼÏñ£º

ʹÓà 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);