全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

本文实例为大家分享了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>

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


# js  # canvas  # 放大镜  # viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)  # JS简单实现查看文档创建日期、修改日期和文档大小的方法示例  # JavaScript编写点击查看大图的页面半透明遮罩层效果实例  # 基于JavaScript实现移动端点击图片查看大图点击大图隐藏  # js写的方法实现上传图片之后查看大图  # javascript基础知识大全 便于大家学习  # 也便于我自己查看  # JS网页图片查看器(兼容IE、FF)可控制图片放大缩小移动  # Javascript查看大图功能代码实现  # 不支持  # 大家分享  # 具体内容  # 大家多多  # solid  # aaa  # offCanvas  # script  # margin  # block  # display  # border  # auto  # px  # scale  # false  # isMouseDown  # window  # Image 


相关文章: 矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  北京制作网站的公司,北京铁路集团官方网站?  制作网页的网站有哪些,电脑上怎么做网页?  Python如何创建带属性的XML节点  nginx修改上传文件大小限制的方法  大同网页,大同瑞慈医院官网?  建站主机选购指南:核心配置与性价比推荐解析  高性能网站服务器配置指南:安全稳定与高效建站核心方案  青岛网站建设如何选择本地服务器?  如何彻底删除建站之星生成的Banner?  php json中文编码为null的解决办法  定制建站策划方案_专业建站与网站建设方案一站式指南  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  建站之星如何修改网站生成路径?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  制作企业网站建设方案,怎样建设一个公司网站?  如何通过VPS搭建网站快速盈利?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  网站企业制作流程,用什么语言做企业网站比较好?  如何通过主机屋免费建站教程十分钟搭建网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  如何通过商城自助建站源码实现零基础高效建站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  建站之星下载版如何获取与安装?  ui设计制作网站有哪些,手机UI设计网址吗?  如何零成本快速生成个人自助网站?  建站之星导航菜单设置与功能模块配置全攻略  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  高防服务器如何保障网站安全无虞?  建站之星后台密码遗忘如何找回?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  怀化网站制作公司,怀化新生儿上户网上办理流程?  微信小程序 input输入框控件详解及实例(多种示例)  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  如何基于PHP生成高效IDC网络公司建站源码?  如何配置FTP站点权限与安全设置?  广州营销型建站服务商推荐:技术优势与SEO优化解析  网站制作知乎推荐,想做自己的网站用什么工具比较好?  香港服务器部署网站为何提示未备案?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何选择高效稳定的ISP建站解决方案?  如何零基础在云服务器搭建WordPress站点?  宝塔Windows建站如何避免显示默认IIS页面?  小型网站建站如何选择虚拟主机?  宝塔建站助手安装配置与建站模板使用全流程解析  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何在IIS中配置站点IP、端口及主机头?  高端云建站费用究竟需要多少预算? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。