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 相关文章推荐
动态加载js文件 document.createElement
Oct 14 Javascript
通过判断JavaScript的版本实现执行不同的代码
May 11 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
JS与C#编码解码
Dec 03 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
jQuery+正则+文本框只能输入数字的实现方法
Oct 07 Javascript
原生js实现轮播图的示例代码
Feb 20 Javascript
详解如何让InstantClick兼容MathJax、百度统计等
Sep 12 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
Nov 05 Javascript
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
JS中this的4种绑定规则详解
Feb 04 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
使用Apache的rewrite技术
2006/06/22 PHP
PHP Token(令牌)设计
2008/03/15 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
自定义php类(查找/修改)xml文档
2013/03/26 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
ext 代码生成器
2009/08/07 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
jquery foreach使用示例
2013/09/12 Javascript
JavaScript AOP编程实例
2015/06/16 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
2016/01/10 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
简单了解django缓存方式及配置
2019/07/19 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
python代码实现图书管理系统
2020/11/30 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
公司行政经理岗位职责
2013/12/24 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
警示教育观后感
2015/06/17 职场文书
初二数学教学反思
2016/02/17 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
Spring实现内置监听器
2021/07/09 Java/Android