Canvas—drawImage,鼠标交互,imageData,

context.drawImage(image,dx,dy);                  d指destination,s指source

context.drawImage(image,dx,dy,dw,dh):dh和dw会默认地帮我们进行图片的缩放处理,也就是在整个canvas的dx,dy这个位置以dw,dh这样的宽和高来绘制image这样一个图片;

context.drawImage(image,sx,sy,sw,sh,dx,dy,dw,dh)

实例演练笔记:放大和缩小图像的方法,超过画布的裁剪,在画布内的显示

绿色是放大的图片,蓝色 是canvas大小,需要将图片放在中间,要算从图片的哪个位置开始截图,因此需要知道sx,sy:图片的大小的一半减去画布的一半的大小。


Canvas与鼠标交互

onmousedown,onmouseup,onmouseout,onmousemove

e.preventDefault(),阻止默认地事件响应

绿色的背景是整个Web页面,蓝色是canvas画布

坐标转换

获取图像像素

imageData = context.getImageData(x,y,w,h)

ImageData对象:width,height,data(data中存储了这个区域图像的像素信息)

putImageData:将已知的imageData放回Canvas画布中

putImageData

imageData中的data是将图片的所有像素转换为一维的数组(将一个二维空间上的数据转换为一维数组);如图所示,在这个像素里,四个元素一组:

imageData.data

灰度滤镜计算方式:var grey = r*0.3+g*0.59+b*0.11;

黑白滤镜计算方式:在灰度滤镜的基础上,if (grey>255/2) {v=255;}else{v=0;}

反色滤镜:255减去每个r,g,b;

模糊滤镜:http://www.imooc.com/video/9287

马赛克滤镜:http://www.imooc.com/video/9287


创建imageData:imageData = context.createImageData(w,h);

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

推荐阅读更多精彩内容

  • 一、简介 HTML5 中的定义:“它是依赖分辨率的位图画布,你可以在 canvas 上面绘制任何图形,甚至加载照片...
    destiny0904阅读 10,596评论 1 4
  • 手册地址 canvas API比较简单 context是主要的操作对象 划线操作 画圆弧 画矩形的接口[仅画路径]...
    桃花島主阅读 1,242评论 0 1
  • 线条样式 绘制直线,第五章知识简单回顾 lineWidth 设置或返回当前的线条宽度,单位为像素 lineCap ...
    Zd_silent阅读 500评论 0 0
  • canvas image 对绘制出来的图形进行操作drawImage(image,dx,dy)draImage(i...
    胡思乱想的Alice阅读 345评论 0 0
  • 最近帮学校官方微信做了一个头像合成的小页面,用户可以自己选择本地照片,上传并裁剪后,与学校logo合成最终图片,用...
    想酷却酷不起来阅读 5,664评论 0 5