当前位置:主页 > javascript教程 > js canvas实现放大镜查看图片功能

js canvas如何实现图片放大镜功能

发布:2019-08-02 14:39:37 197


给大家整理一篇相关的编程文章,网友蒯新月根据主题投稿了本篇教程内容,涉及到js、canvas、放大镜、js canvas实现放大镜查看图片功能相关内容,已被294网友关注,涉猎到的知识点内容可以在下方电子书获得。

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

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

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body >
<canvas id="myCanvas" >
  你的浏览器不支持canvas
</canvas>
<canvas id="offCanvas" ></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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


参考资料

相关文章

  • JS策略模式概念与实例用法

    发布:2020-02-09

    这篇文章主要介绍了JS设计模式之策略模式概念与用法,简单分析了策略模式的基本概念、原理并结合实例形式分析了javascript实现与使用策略模式的相关操作技巧,需要的朋友可以参考下


  • 如何解决JS浮点数运算结果不精确的Bug

    发布:2019-11-16

    这篇文章主要给大家介绍了关于JS浮点数运算结果不精确的Bug解决,文中通过示例代码介绍的非常详细,对大家学习或者使用JS具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧


  • npm 5.0 学习中遇到的坑

    发布:2020-04-06

    最近使用到了npm5.0,第一次使用确实被惊艳了,但随着而来的是一些坑,下面这篇文章主要给大家简单介绍了关于npm 5的一些新坑,需要的朋友可以参考学习,下面来一起看看吧。


  • JavaScript实现图片连播以及联级菜单的知识点

    发布:2020-01-07

    这篇文章主要介绍了基于JavaScript实现图片连播和联级菜单实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下


  • JS利用scroll监听resize详解

    发布:2019-08-02

    这篇文章主要给大家介绍了JS奇技之利用scroll来监听resize的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。


  • vue使用pdfjs显示PDF可复制的实现方法

    发布:2022-06-23

    给大家整理一篇关于vue的教程,这篇文章主要介绍了vue使用pdfjs显示PDF可复制的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • javascript实现导航栏分页的代码示例

    发布:2021-06-12

    这篇文章主要为大家详细介绍了javascript实现导航栏分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • JS正则表达式完美实现身份证校验的实例讲解

    发布:2020-06-15

    这篇文章主要介绍了JS正则表达式完美实现身份证校验功能,需要的朋友可以参考下


网友讨论