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


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中index()的用法分析
Sep 05 Javascript
js获取页面传来参数的方法
Sep 06 Javascript
Javascript MVC框架Backbone.js详解
Sep 18 Javascript
JS实现5秒钟自动封锁div层的方法
Feb 20 Javascript
JavaScript实现点击文字切换登录窗口的方法
May 11 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
Feb 14 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
javascript 日期相减-在线教程(附代码)
Aug 17 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
使用vuepress搭建静态博客的示例代码
Feb 14 Javascript
vue中动态select的使用方法示例
Oct 28 Javascript
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 如何向 MySQL 发送数据
2006/10/09 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
php URL验证正则表达式
2011/07/19 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
JQuery index()方法使用代码
2010/06/02 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
js实现方块上下左右移动效果
2017/08/17 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
pandas去除重复列的实现方法
2019/01/29 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
python requests使用socks5的例子
2019/07/25 Python
下载官网python并安装的步骤详解
2019/10/12 Python
pytorch下使用LSTM神经网络写诗实例
2020/01/14 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
化工专业推荐信范文
2013/11/28 职场文书
校园文明标语
2014/06/13 职场文书
清洁工岗位职责
2015/02/13 职场文书
求职自我评价怎么写
2015/03/09 职场文书
2016预备党员培训心得体会
2016/01/08 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电