像素操作

7:像素操作

ctx.getImageData(x,y,w,h)

                         ImageData对象

                                  width:选中区域在横向上css像素的个数

                                  height:选中区域在纵向上css像素的个数

                                  data:数组 //修改data数组中的rbg值可以更改颜色和透明度

//具体查看API

选中区域所有像素点的rgba信息,rgba的取值从0到255

ctx.putImageData(imgdata,x,y)

ctx.createImageData(w,h)

返回的是imgdata对象 默认像素点的信息是rgba(0,0,0,0)

//单像素操作 html5只提供多像素的API一块区域

                                  //单像素操作

                                  //获取整个画布的像素

                                  var ImageData = ctx.getImageData(20,20,100,100);

                                  //更改某个地方的像素

                                  setPxInfo(ImageData,25,25,[0,0,0,255]);

                                  ctx.putImageData(ImageData,20,20);

                                 

                         function getPxInfo(imgdata,x,y){

                                  var color = [];

                                 

                                  var data = imgdata.data;

                                  var w = imgdata.width;

                                  var h = imgdata.height;

                                 

                                  //(x,y)  x*w+y

                                  //r

                                  color[0]=data[(y*w+x)*4];

                                  //g

                                  color[1]=data[(y*w+x)*4+1];

                                  //b

                                  color[2]=data[(y*w+x)*4+2];

                                  //a

                                  color[3]=data[(y*w+x)*4+3];

                                 

                                  return color;

                         }

                        

                         function setPxInfo(imgdata,x,y,color){

                                 

                                  var data = imgdata.data;

                                  var w = imgdata.width;

                                  var h = imgdata.height;

                                 

                                  //(x,y)  x*w+y   x:多少列  y:多少行

                                  //r

                                  data[(y*w+x)*4]=color[0];

                                  //g

                                  data[(y*w+x)*4+1]=color[1]; //画布是一个imgdata.width* imgdata.height,二位数组,里面存储一个像素是占4个位置,需要*4

                                  //b

                                  data[(y*w+x)*4+2]=color[2];

                                  //a

                                  data[(y*w+x)*4+3]=color[3]; 

                         }//需要注意坐标轴

实例:马赛克

 https://github.com/Hightinstance/practice/tree/master/Maseke

猜你喜欢

转载自www.cnblogs.com/love-life-insist/p/9136605.html
今日推荐