js canvas实现放大镜查看图片功能


Posted in Javascript onJune 08, 2017

本文实例为大家分享了canvas实现放大镜查看图片功能的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body style="background: black;">
<canvas id="myCanvas" style="display: block;margin: 0px auto;border: 10px solid #aaa ">
  你的浏览器不支持canvas
</canvas>
<canvas id="offCanvas" style="display: none"></canvas>
<script>
  var myCanvas = document.getElementById("myCanvas");
  var context = myCanvas.getContext("2d");

  var offCanvas = document.getElementById("offCanvas");
  var offContext = offCanvas.getContext("2d");

  var isMouseDown = false;
  var scale;

  var image = new Image();

  window.onload = function () {

    myCanvas.width = 300;
    myCanvas.height = 200;

    image.src = "1.jpg";

    image.onload = function () {

      offCanvas.width = image.width;
      offCanvas.height = image.height;
      scale = offCanvas.width / myCanvas.width ;

      context.drawImage(image,0,0,myCanvas.width,myCanvas.height);
      offContext.drawImage(image,0,0);

    }

  };
  function windowToCanvas(x,y) {
    var bbox = myCanvas.getBoundingClientRect();
    return { x : x - bbox.left , y : y - bbox.top};
  }
  myCanvas.onmousedown = function (e) {
    e.preventDefault();
    var point = windowToCanvas(e.clientX , e.clientY);
    console.log(point);
    isMouseDown = true;
    drawCanvasWithMagnifier( true , point );
  };
  myCanvas.onmousemove = function (e) {
    e.preventDefault();
    if (isMouseDown ){
      var point = windowToCanvas(e.clientX , e.clientY);
      drawCanvasWithMagnifier( true , point );
    }
  };
  myCanvas.onmouseup = function (e) {
    e.preventDefault();
    isMouseDown = false;
    drawCanvasWithMagnifier( false );
  };
  myCanvas.onmouseout = function (e) {
    e.preventDefault();
    isMouseDown = false;
    drawCanvasWithMagnifier( false );
  };
  function drawCanvasWithMagnifier( isShowMagnifier , point) {
    context.clearRect(0,0,myCanvas.width,myCanvas.height);
    context.drawImage(image,0,0,myCanvas.width,myCanvas.height);
    if(isShowMagnifier == true ){
      drawMagnifier( point );
    }
  }
  function drawMagnifier( point ) {
    var imageLG_cx = point.x * scale ;
    var imageLG_cy = point.y * scale ;

    var mr = 20 ;

    var sx = imageLG_cx - mr ;
    var sy = imageLG_cy - mr ;

    var dx = point.x - mr ;
    var dy = point.y - mr ;

    context.save();

    context.lineWidth = 5.0;
    context.strokeStyle = "#069";


    context.beginPath();
    context.arc(point.x,point.y,mr,0,Math.PI*2);
    context.stroke();

    context.clip();

    context.drawImage(offCanvas,sx,sy,2*mr,2*mr,dx,dy,2*mr,2*mr);
    context.restore();
  }
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
Sep 09 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 Javascript
论JavaScript模块化编程
Mar 07 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
Jun 21 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
Dec 06 Javascript
angularjs封装$http为factory的方法
May 18 Javascript
js实现图片轮播效果学习笔记
Jul 26 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
小程序新版订阅消息模板消息
Dec 31 Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 #Javascript
微信小程序开发之map地图实现教程
Jun 08 #Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 #Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 #Javascript
微信小程序开发之toast等弹框提示使用教程
Jun 08 #Javascript
javascript实现二叉树遍历的代码
Jun 08 #Javascript
微信小程序tabbar不显示解决办法
Jun 08 #Javascript
You might like
php不用正则验证真假身份证
2013/11/06 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
php三元运算符知识汇总
2015/07/02 PHP
在Debian系统下配置LNMP的教程
2015/07/09 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
JS+CSS实现动态时钟
2021/02/19 Javascript
动态创建类实例代码
2009/10/07 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
python中有帮助函数吗
2020/06/19 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
入党转预备思想汇报
2014/01/07 职场文书
资产运营委托书范本
2014/10/16 职场文书
学校中秋节活动总结
2015/03/23 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python