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 JSON的解析方式
Jul 25 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
Dec 22 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
vue-resouce设置请求头的三种方法
Sep 12 Javascript
node.js中使用Export和Import的方法
Sep 18 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
关于layui flow loading占位图的实现方法
Sep 21 Javascript
vue中template的三种写法示例
Oct 21 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
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
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
JS操作数据库的实例代码
2013/10/17 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
Jquery异步上传文件代码实例
2019/11/13 jQuery
js实现弹幕飞机效果
2020/08/27 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
Python中用Spark模块的使用教程
2015/04/13 Python
Python 备份程序代码实现
2017/03/06 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
2017/03/11 Python
Python 多线程Threading初学教程
2017/08/22 Python
利用numpy实现一、二维数组的拼接简单代码示例
2017/12/15 Python
scrapy爬虫实例分享
2017/12/28 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
Python FtpLib模块应用操作详解
2019/12/12 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
Java基础面试题
2012/11/02 面试题
教育科研先进个人材料
2014/01/26 职场文书
创业大赛策划书
2014/03/01 职场文书
2015年党性分析材料
2014/12/19 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书