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


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 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题
Jan 09 Javascript
Javascript调用C#代码
Jan 17 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
JS中实现replaceAll的方法(实例代码)
Nov 12 Javascript
jQuery中offsetParent()方法用法实例
Jan 19 Javascript
jQuery插件kinMaxShow扩展效果用法实例
May 04 Javascript
js简单实现表单中点击按钮动态增加输入框数量的方法
Aug 18 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
原生javascript实现图片放大镜效果
Jan 18 Javascript
在vue中使用jsonp进行跨域请求接口操作
Oct 29 Javascript
vue修饰符.capture和.self的区别
Apr 22 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
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
DOM下的节点属性和操作小结
2009/05/14 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
jquery实现回车键触发事件(实例讲解)
2017/11/21 jQuery
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
python实现登陆知乎获得个人收藏并保存为word文件
2015/03/16 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
同程旅游英文网站:LY.com
2018/11/13 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
新书吧创业计划书
2014/01/31 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
2014预备党员党课学习心得范文
2014/07/08 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS