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对表单操作2
Apr 06 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
Feb 24 Javascript
jQuery实现的漂亮表单效果代码
Aug 18 Javascript
BootStrap selectpicker
Jun 20 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
BootStrap Tooltip插件源码解析
Dec 27 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
基于原生js运动方式关键点的总结(推荐)
Oct 01 Javascript
详解Node.js使用token进行认证的简单示例
May 25 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
浅析php中jsonp的跨域实例
2013/06/21 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
javascript document.referrer 用法
2009/04/30 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
node.js基础知识小结
2018/02/26 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
详解Python爬虫的基本写法
2016/01/08 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
基于python log取对数详解
2018/06/08 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
类如何去实现接口
2013/12/19 面试题
高中考试作弊检讨书
2014/01/14 职场文书
房地产项目建议书
2014/03/12 职场文书
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
义卖募捐活动总结
2015/05/09 职场文书
消防安全主题班会
2015/08/12 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
使用Python开发冰球小游戏
2022/04/30 Python