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 相关文章推荐
幻宇的层模拟窗口效果-提供演示和下载
Jan 20 Javascript
用javascript来实现动画导航效果的代码
Dec 16 Javascript
定义select的边框颜色
Apr 28 Javascript
爆炸式的JS圆形浮动菜单特效代码
Mar 03 Javascript
js带缩略图的图片轮播效果代码分享
Sep 14 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
Dec 06 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
Dec 26 Javascript
JavaScript之Map和Set_动力节点Java学院整理
Jun 29 Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 20 Javascript
简述ES6新增关键字let与var的区别
Aug 23 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实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
对python的文件内注释 help注释方法
2018/05/23 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
python os模块简单应用示例
2019/05/23 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
2019/11/29 Python
PyCharm如何导入python项目的方法
2020/02/06 Python
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
资深财务管理人员自我评价
2013/09/22 职场文书
高二生物教学反思
2014/01/27 职场文书
教师求职自荐书
2014/06/14 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
新员工入职欢迎词
2015/01/23 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记