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 相关文章推荐
js实现div闪烁原理及实现代码
Jun 24 Javascript
实例分析javascript中的call()和apply()方法
Nov 28 Javascript
jQuery中:focus选择器用法实例
Dec 30 Javascript
简介JavaScript中valueOf()方法的使用
Jun 05 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
全选复选框JavaScript编写小结(附代码)
Aug 16 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
vue项目中的webpack-dev-sever配置方法
Dec 14 Javascript
vue.js使用3DES加密的方法示例
May 18 Javascript
vue实现键盘输入支付密码功能
Aug 18 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
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
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python 从远程服务器下载东西的代码
2013/02/10 Python
python简单实现旋转图片的方法
2015/05/30 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
2014年师德承诺书
2014/05/23 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers