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 构建客户/服务分离的链接模型中Table分页代码效率初探
Jan 22 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
Nov 06 Javascript
JSP基于Bootstrap分页显示实例解析
Jun 12 Javascript
Angular ng-repeat 对象和数组遍历实例
Sep 14 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
Mar 04 Javascript
Angular多选、全选、批量选择操作实例代码
Mar 10 Javascript
JS实现弹出下载对话框及常见文件类型的下载
Jul 13 Javascript
Vue中的transition封装组件的实现方法
Aug 13 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
JavaScript实现点击切换功能
Jan 27 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递归删除目录与文件的方法
2015/01/30 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
微信小程序功能之全屏滚动效果的实现代码
2018/11/22 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
[15:20]DOTA2亚洲邀请赛总决赛开幕式表演:羽泉献唱
2017/04/05 DOTA
Python查询阿里巴巴关键字排名的方法
2015/07/08 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
python购物车程序简单代码
2018/04/18 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
python实现图片筛选程序
2018/10/24 Python
详解用python写一个抽奖程序
2019/05/10 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
2014/06/23 HTML / CSS
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
教育专业毕业生推荐信
2014/07/10 职场文书
超市店庆活动方案
2014/08/31 职场文书
道歉信范文
2015/05/12 职场文书
立项申请报告范本
2015/05/15 职场文书
小马王观后感
2015/06/11 职场文书
2019教师的学习计划
2019/06/25 职场文书
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server
Redis基本数据类型Set常用操作命令
2022/06/01 Redis
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS