当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js canvas实现画图、滤镜效果

js canvas实现画图、滤镜效果

2019年06月01日  | 移动技术网IT编程  | 我要评论

空调维修,观赏鱼之家网站zadull,茱莉雅 丽珊德拉度

本文实例为大家分享了canvas实现画图、滤镜效果的具体代码,供大家参考,具体内容如下

1、用canvas来实现画图的代码如下:

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>title</title>
 <style media="screen">
  body {background:black; text-align:center}
  #v1 {background:white}
 </style>
 <script>
  window.onload=function () {
   let ov=document.getelementbyid('v1');
   let gd=ov.getcontext('2d'); //图形上下文——绘图接口
   let ocolor=document.getelementbyid('color1');

   let color;
   ocolor.onchange=function () {
    color=this.value;
   }

   let lastx,lasty;
   ov.onmousedown=function (ev) {

    lastx=ev.offsetx;
    lasty=ev.offsety;

    ov.onmousemove=function (ev) {
     gd.beginpath();//清除之前所有的路径
     
     gd.moveto(lastx,lasty);
     gd.lineto(ev.offsetx,ev.offsety);

     lastx=ev.offsetx;
     lasty=ev.offsety;

     gd.strokestyle=color;//用获取到的颜色作为绘制颜色
     gd.stroke();

    }
    ov.onmouseup=function () {
     ov.onmousemove=null;
     ov.onmouseup=null;
    }
    
   }

  }


 </script>
</head>
<body>
<input type="color" id="color1" /><br/>
<!--canvas的宽和高是写在标签里的,写在style里面不起作用-->
<canvas id="v1" width="800" height="600">
</canvas>
</body>
</html>

代码的运行结果如图:

2、用canvas来实现滤镜效果,其实就是像素级操作。代码如下:代码中的1.jpg为网上找的风景图,可自行寻找。

<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>title</title>
 <style media="screen">
  body {background:black; text-align:center}
  #v1 {background:white}
 </style>
 <script>
  window.onload=function () {
   let ov=document.getelementbyid('v1');
   let obtn1=document.getelementbyid('btn1');
   let obtn2=document.getelementbyid('btn2');
   let obtn3=document.getelementbyid('btn3');
   let obtn4=document.getelementbyid('btn4');
   let gd=ov.getcontext('2d');

   let img=new image();
   img.src='1.jpg';
   img.onload=function () {
    gd.drawimage(img,0,0);

    obtn1.onclick=function () {
     //获取像素区
     let imagedata=gd.getimagedata(0,0,ov.width,ov.height);

     //data[(r*w+c)*4]
     for(let r=0;r<ov.height;r++){
      for(let c=0;c<ov.width;c++){
       let avg=(imagedata.data[(r*ov.width+c)*4]+imagedata.data[(r*ov.width+c)*4+1]+imagedata.data[(r*ov.width+c)*4+2])/3;

       imagedata.data[(r*ov.width+c)*4]=imagedata.data[(r*ov.width+c)*4+1]=imagedata.data[(r*ov.width+c)*4+2]=avg;
      }
     }
     gd.putimagedata(imagedata,0,0);
    }

    obtn2.onclick=function () {
     //获取像素区
     let imagedata=gd.getimagedata(0,0,ov.width,ov.height);

     //data[(r*w+c)*4]
     for(let r=0;r<ov.height;r++){
      for(let c=0;c<ov.width;c++){
       imagedata.data[(r*ov.width+c)*4+2]=0;

0      }
     }
     gd.putimagedata(imagedata,0,0);
    }

    obtn3.onclick=function () {
     //获取像素区
     let imagedata=gd.getimagedata(0,0,ov.width,ov.height);

     //data[(r*w+c)*4]
     for(let r=0;r<ov.height;r++){
      for(let c=0;c<ov.width;c++){
       imagedata.data[(r*ov.width+c)*4]=0;
       imagedata.data[(r*ov.width+c)*4+2]=0;
      }
     }
     gd.putimagedata(imagedata,0,0);
    }

    obtn4.onclick=function () {
     //火狐支持,在火狐中点击导出图片会在新窗口打开图片
     let src=ov.todataurl();
     window.open(src,"_blank");

    }



   }
  }


 </script>
</head>
<body>
<input type="button" value="变灰" id="btn1"/>
<input type="button" value="变黄" id="btn2"/>
<input type="button" value="变绿" id="btn3"/>
<input type="button" value="导出图片" id="btn4"/>
<canvas id="v1" width="800" height="600">
</canvas>
</body>
</html>

代码运行效果截图:该图为变黄效果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网