canvas绘制图片

绘制图片,要求图片必须在加载完成之后。
drawImage(img,x,y)图片有多大绘制多大;
drawImage(img,x,y,iw,ih)将图片绘制到指定大小内,会压缩或拉伸图片;
drawImage(img,ix,iy,iw,ih,cx,cy,cw,ch)前4个参数决定从原图上指定位置剪下指定大小的图,绘制到指定位置的画布上的指定大小,会压缩或拉伸图片。
getImageData(x,y,w,h)获取指定范围内的像素信息
putImageData(imgData,x,y)向指定范围内绘制像素信息
clip()裁剪:

  1. 必须有一条封闭的路径
  2. 路径必须在clip之前创建
  3. clip必须在drawImage之前调用

我么可以使用给定的方法,完成图片的一些滤镜效果

反色

    arr[i] = 255-arr[i];
    arr[i+1] = 255-arr[i+1];
    arr[i+2] = 255-arr[i+2];

灰度

arr[i]=arr[i+1]=arr[i+2]=(arr[i]+arr[i+1]+arr[i+2])/3;

视频也可以通过此方式改变播放的颜色。

//first,获取画布
var canvas = document.querySelector("#canvas");
//second,获取绘制环境
var ctx = canvas.getContext("2d");
var video = document.querySelector("video");

video.oncanplaythrough = function(){
  function _run(){

    ctx.drawImage(video,0,0);

    var data = ctx.getImageData(0,0,500,500);
    console.log(data);
    var arr = data.data;
    for (var i = 0; i < arr.length; i+=4) {
      //反色
      arr[i] = 255-arr[i];
      arr[i+1] = 255-arr[i+1];
      arr[i+2] = 255-arr[i+2];

      // 灰度
      arr[i]=arr[i+1]=arr[i+2]=(arr[i]+arr[i+1]+arr[i+2])/3;
    }
    ctx.putImageData(data,0,0);
    requestAnimationFrame(_run);
  }
  _run();
}

图片样式

createPattern(img,repeatType) 创建平铺对象
repeatType:平铺类型 repeat-x repeat-y repeat no-repeat

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 绘制图片 按图片原大小绘制var context = document.getElementById("canva...
    不住海边也喜欢浪阅读 4,349评论 0 1
  • 绘制图片必须在图片加载完成之后绘图 3-9个参数drawImage(img,x,y) 图片有多大,绘制多大 d...
    哼_阅读 423评论 0 1
  • canvas - 图片绘制 1、 按照图片原大小加载 注意: 必须要保证图片加载完毕后,再绘制图片(绘制写在on...
    云音流阅读 1,156评论 0 4
  • 1.绘制图片 1 基本绘制图片的方式 2 在画布上绘制图像,并规定图像的宽度和高度 如果指定宽高,最好成比例,不然...
    岩蔷薇阅读 6,441评论 0 0
  • 周六参加了 Learn Smart 活动,学习制作了“太空船躲避宇宙碎片”小游戏。小组协作文档[https://b...
    斐硕人阅读 775评论 1 1