微信小程序实现电子签名并导出图片


Posted in Javascript onMay 27, 2020

本文实例为大家分享了微信小程序做电子签名,并导出图片的具体代码,供大家参考,具体内容如下

wxml:

<canvas class="canvas" id="canvas" canvas-id="canvas" disable-scroll="true" bindtouchstart="canvasStart" bindtouchmove="canvasMove" bindtouchend="canvasEnd" touchcancel="canvasEnd" binderror="canvasIdErrorCallback"></canvas>

<button type="default" bindtap="cleardraw">清除画布</button>
<button type="default" bindtap="getimg">导出图片</button>

wxss:

.canvas {
 width: 100%;
 min-height: 400rpx;
 border: 1rpx solid #000;  /*//突出canvas画布范围 */
 box-sizing: border-box;
}

js:

var context = null;// 使用 wx.createContext 获取绘图上下文
var isButtonDown = false;
var arrx = [];
var arry = [];
var arrz = [];
var canvasw = 0;
var canvash = 0;
//获取系统信息
wx.getSystemInfo({
 success: function (res) {
  canvasw = res.windowWidth;//设备宽度
  canvash = res.windowHeight; //设备高度
 }
});

Page({
 canvasIdErrorCallback: function (e) {
  console.error(e.detail.errMsg)
 },
 //绘制开始
 canvasStart: function (event) {
  isButtonDown = true;
  arrz.push(0);
  arrx.push(event.changedTouches[0].x);
  arry.push(event.changedTouches[0].y);
 },
 //绘制过程
 canvasMove: function (event) {
  if (isButtonDown) {
   arrz.push(1);
   arrx.push(event.changedTouches[0].x);
   arry.push(event.changedTouches[0].y);
  };

  for (var i = 0; i < arrx.length; i++) {
   if (arrz[i] == 0) {
    context.moveTo(arrx[i], arry[i])
   } else {
    context.lineTo(arrx[i], arry[i])
   };
  };
  context.clearRect(0, 0, canvasw, canvash);

  context.setStrokeStyle('#000000');
  context.setLineWidth(4);
  context.setLineCap('round');
  context.setLineJoin('round');
  context.stroke();

  context.draw(false);
 },
 canvasEnd: function (event) {
  isButtonDown = false;
 },
 cleardraw: function () {
  //清除画布
  arrx = [];
  arry = [];
  arrz = [];
  context.clearRect(0, 0, canvasw, canvash);
  context.draw(true);
 },
 //导出图片
 getimg: function () {
  if (arrx.length == 0) {
   wx.showModal({
    title: '提示',
    content: '签名内容不能为空!',
    showCancel: false
   });
   return false;
  };
  //生成图片
  wx.canvasToTempFilePath({
   canvasId: 'canvas',
   success: function (res) {
    wx.saveImageToPhotosAlbum({
     filePath: res.tempFilePath,
     success(res) {
      // console.log(res)
      wx.showToast({
       title: '保存成功',
      });
     },
     fail(err) {
      console.log(err)
     }
    })
    //将照片存入服务器
    // wx.uploadFile({
    //  url: '', //接口地址
    //  filePath: res.tempFilePath,
    //  name: 'file',
    //  formData: {               
    //   'user': 'test'
    //  },
    //  success function (res) {
    //   console.log(res);
    //  },
    //  fail: function (res) {
    //   console.log(res);
    //  },
    //  complete: function (res) {
    //  }
    // });
   }
  })

 },
 /**
  * 页面的初始数据
  */
 data: {
  
 },
 /**
  * 生命周期函数--监听页面加载
  */
 onLoad: function (options) {
  // 使用 wx.createContext 获取绘图上下文 context
  context = wx.createCanvasContext('canvas');
  context.beginPath()
  context.setStrokeStyle('#000000');
  context.setLineWidth(4);
  context.setLineCap('round');
  context.setLineJoin('round');
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery last-child 列表最后一项的样式
Jan 22 Javascript
JS常用正则表达式总结
Nov 12 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
js实现遮罩层弹出框的方法
Jan 15 Javascript
javascript轮播图算法
Oct 21 Javascript
详解jQuery简单的表格应用
Dec 16 Javascript
AngularJS ui-router (嵌套路由)实例
Mar 10 Javascript
深入理解Vue 单向数据流的原理
Nov 09 Javascript
JS删除数组里的某个元素方法
Feb 03 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
Apr 26 Javascript
Vue3配置axios跨域实现过程解析
Nov 25 Vue.js
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
May 27 #Javascript
微信公众号网页分享功能开发的示例代码
May 27 #Javascript
JS字符串补全方法padStart()和padEnd()
May 27 #Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 #Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
May 27 #Javascript
使用JavaScript获取Django模板指定键值数据
May 27 #Javascript
基于Vue CSR的微前端实现方案实践
May 27 #Javascript
You might like
调频问题解答
2021/03/01 无线电
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
jQuery之ajax删除详解
2014/02/27 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
Vue.js实现tab切换效果
2019/07/24 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
python创造虚拟环境方法总结
2019/03/04 Python
python求质数列表的例子
2019/11/24 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
自荐信格式技巧有哪些呢
2013/11/19 职场文书
本科毕业生求职自荐信
2014/02/03 职场文书
假期安全教育广播稿
2014/10/04 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
张思德观后感
2015/06/09 职场文书
个人收入证明格式
2015/06/24 职场文书
学生检讨书范文
2019/06/24 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python