JavaScript html5 canvas实现图片上画超链接


Posted in Javascript onOctober 20, 2017

本文实例为大家分享了html5 canvas在图片上画超链接的具体代码,供大家参考,具体内容如下

1. html

<canvas id="canvasFile" style="margin-top:15px;" width="500" height="400"></canvas> 
<input type="button" id="btnRedo" value="Re-Draw" class="btn btn-warning"/>

2. javascript

var photoW = 400; 
    var photoH = 300; 
    var photo; 
     
     
    // logic load image into canvas 
    // ... 
    // e.g.  
    // photo = new Image(); 
    // photo.onload = function() { 
    // draw photo into canvas when ready 
    // ctx.drawImage(photo, 0, 0, photoW, photoH); 
    // }; 
    // load photo into canvas 
    // photo.src = picURL; 
   
     
 // canvas highlight 
    var canvas = document.getElementById('canvasFile'), 
      ctx = canvas.getContext('2d'), 
      img = new Image; 
    var btnDone = document.getElementById('btnDone'); 
    var btnRedo = document.getElementById('btnRedo'); 
 
 
    ctx.strokeStyle = '#FF0000'; 
 
    function DrawDot(x, y) { 
      var centerX = x; 
      var centerY = y; 
      var radius = 2; 
 
 
      ctx.beginPath(); 
      ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); 
      ctx.fillStyle = 'red'; 
      ctx.fill(); 
      ctx.lineWidth = 2; 
      ctx.strokeStyle = '#FF0000'; 
      ctx.stroke(); 
    } 
 
 
    function startDrawing() { 
      ctx.drawImage(img, 0, 0, photoW, photoH); 
      canvas.onmousemove = mousemoving; 
      canvas.onmousedown = mousedownhandle; 
      canvas.onmouseup = mouseuphandle; 
      // ## mobile events 
      //touchstart ? to toggle drawing mode “on” 
      //touchend ? to toggle drawing mode “off” 
      //touchmove ? to track finger position, used in drawing 
      canvas.addEventListener('touchmove', touchmove, false); 
      canvas.addEventListener('touchend', mouseuphandle, false); 
 
 
      btnRedo.onclick = function (e) { 
        ctx.clearRect(0, 0, ctx.width, ctx.height); 
        ctx.drawImage(photo, 0, 0, photoW, photoH); 
        savedrawing(); 
      } 
    } 
    function savedrawing(e) { 
      var image = document.getElementById('canvasFile').toDataURL("image/jpeg"); 
      image = image.replace('data:image/jpeg;base64,', ''); 
      $("#imgNric1").val(image); 
    }; 
 

    function mousemoving(e) { 
      if (drawing) { 
        mousedownhandle(e); 
      } 
    } 
 
 
    var drawing = false; 
 
 
    function mousedownhandle(e) { 
      drawing = true; 
      var r = canvas.getBoundingClientRect(), 
        x = e.clientX - r.left, 
        y = e.clientY - r.top; 
 
 
      DrawDot(x, y); 
    }  
 
    function mouseuphandle(e) { 
      savedrawing(); 
      e.preventDefault(); 
      drawing = false; 
       
    } 
  
 
    //// mobile touch events 
    function touchmove(e) { 
      if (e.clientX > 800) { 
        mousedownhandle(e); 
        return; 
      } 
 
      var r = canvas.getBoundingClientRect(), 
        //event.changedTouches[0].pageX + ":" + event.changedTouches[0].pageY; 
        x = e.changedTouches[0].pageX - r.left, 
        y = e.changedTouches[0].pageY - r.top; 
 
 
      DrawDot(x, y); 
      e.preventDefault(); 
    }

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

Javascript 相关文章推荐
jQuery 图像裁剪插件Jcrop的简单使用
May 22 Javascript
javascript 数组排序函数
Aug 20 Javascript
javascript的push使用指南
Dec 05 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
Sep 28 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
Bootstrap图片轮播效果详解
Oct 17 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
Vue.js组件高级特性实例详解
Dec 24 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
Sep 25 Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 #Javascript
jquery select插件异步实时搜索实例代码
Oct 20 #jQuery
移动端效果之IndexList详解
Oct 20 #Javascript
详解webpack性能优化——DLL
Oct 20 #Javascript
vue利用better-scroll实现轮播图与页面滚动详解
Oct 20 #Javascript
浅谈如何使用 webpack 优化资源
Oct 20 #Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 #jQuery
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
十天学会php之第二天
2006/10/09 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
vue实现todolist单页面应用
2017/04/11 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
Python OpenCV获取视频的方法
2018/02/28 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
解决python "No module named pip" 的问题
2018/10/13 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
python3获取url文件大小示例代码
2019/09/18 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
雅高酒店中国:Accorhotels.com China
2018/03/26 全球购物
高中生自我鉴定范文
2013/10/30 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
七一党日活动总结
2014/07/08 职场文书
4s店活动策划方案
2014/08/25 职场文书
离婚案件上诉状
2015/05/23 职场文书
小马王观后感
2015/06/11 职场文书