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 相关文章推荐
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
jQuery中not()方法用法实例
Jan 06 Javascript
JS中的Replace方法使用经验分享
May 20 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
Jun 09 jQuery
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
JS中跳出循环的示例代码
Sep 14 Javascript
JavaScript for循环 if判断语句(学习笔记)
Oct 11 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
vue集成百度UEditor富文本编辑器使用教程
Sep 21 Javascript
详解如何在JS代码中消灭for循环
Dec 11 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php 取得瑞年与平年的天数的代码
2009/08/10 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php图片裁剪函数
2018/10/31 PHP
围观tangram js库
2010/12/28 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
浅析JavaScript动画
2015/06/10 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
轻松搞定js表单验证
2016/10/13 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
pytorch梯度剪裁方式
2020/02/04 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
机械专业应届生求职信
2013/12/12 职场文书
大学生受助感言
2015/08/01 职场文书
感恩的心主题班会
2015/08/12 职场文书
小学班长竞选稿
2015/11/20 职场文书
请假条应该怎么写?
2019/06/24 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
spring 项目实现限流方法示例
2022/07/15 Java/Android
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python