【微信小程序】实现手写电子签名并保存为图片功能
生活随笔
收集整理的這篇文章主要介紹了
【微信小程序】实现手写电子签名并保存为图片功能
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
需求概述:
微信小程序的一個(gè)功能,類似于畫板,用于電子簽名,要求有一鍵清空畫板和保存功能。
實(shí)現(xiàn)思路:
微信開發(fā)文檔中的Canvas組件
微信畫布API中的
wx.createCanvasContext(string canvasId, Object this)
wx.canvasToTempFilePath(Object object, Object this)
CanvasContext.draw(boolean reserve, function callback)
開發(fā)文檔中把上面的API的用法寫的很詳細(xì)了,這里不多贅述了,直接放代碼:
WXML文件
WXSS文件
.Container {border: black 2px solid;border-radius: 3px;height: 99vh;width: 98vw;margin: 0 auto;box-shadow: 0 0 3px 2px black; }.PaintRegion {height: 90%;border: black 1px solid;margin: 3px 3px;margin-bottom: 10px; }.BtnRegion {/* height: 8%; */text-align: center; }.myCanvas {height: 99%;width: 99%; }JS文件
var config = require("../../utils/config.js"); Page({/*** 頁面的初始數(shù)據(jù)*/data: {penColor: 'black',lineWidth: 3,Imgurl: ""},/*** 觸摸開始*/touchStart: function(e) {//得到觸摸點(diǎn)的坐標(biāo)this.startX = e.changedTouches[0].x;this.startY = e.changedTouches[0].y;this.context = wx.createCanvasContext("myCanvas", this);// 設(shè)置畫筆顏色this.context.setStrokeStyle(this.data.penColor);// 設(shè)置線條寬度this.context.setLineWidth(this.data.lineWidth);this.context.setLineCap('round'); // 讓線條圓潤this.context.beginPath();},/*** 手指觸摸后移動(dòng)*/touchMove: function(e) {var startX1 = e.changedTouches[0].x;var startY1 = e.changedTouches[0].y;this.context.moveTo(this.startX, this.startY);this.context.lineTo(startX1, startY1);this.context.stroke();this.startX = startX1;this.startY = startY1;//只是一個(gè)記錄方法調(diào)用的容器,用于生成記錄繪制行為的actions數(shù)組。context跟<canvas/>不存在對應(yīng)關(guān)系,一個(gè)context生成畫布的繪制動(dòng)作數(shù)組可以應(yīng)用于多個(gè)<canvas/>wx.drawCanvas({canvasId: 'myCanvas',reserve: true,actions: this.context.getActions() // 獲取繪圖動(dòng)作數(shù)組})},/*** 觸摸結(jié)束*/touchEnd: function(e) {this.touchMove(e);},/*** 清除涂鴉信息*/clearCanvas: function(e) {this.context = wx.createCanvasContext("myCanvas", this);this.context.draw();//CanvasContext.draw(boolean reserve, function callback)//將之前在繪圖上下文中的描述(路徑、變形、樣式)畫到 canvas 中。//reserve:本次繪制是否接著上一次繪制。false則會(huì)清空畫布,true則保留},SaveImg: function() {var that = this;this.context = wx.createCanvasContext("myCanvas", this);this.context.draw(true, function() {wx.canvasToTempFilePath({canvasId: 'myCanvas',success: function(res) {that.setData({//這里是為了預(yù)覽功能做準(zhǔn)備Imgurl: res.tempFilePath});//將圖片保存到服務(wù)器wx.uploadFile({url: config.fileUrl + "UpLoadFile.php", //接口地址filePath: res.tempFilePath,name: 'uploadfile_ant',header: {"Content-Type": "multipart/form-data"},success: function(res) {console.log(JSON.parse(res.data).url); //打印出后臺傳回前端的圖片的url地址},fail: function(res) {wx.hideToast();wx.showModal({title: '錯(cuò)誤提示',content: '上傳圖片失敗',showCancel: false,success: function(res) {}})}});//若需要將圖片下載到本地,則打開下面的注釋// wx.saveImageToPhotosAlbum({// // 下載圖片// filePath: res.tempFilePath,// success: function() {// wx.showToast({// title: '保存成功',// icon: 'success',// })// },// })},})});} })上傳圖片的后臺PHP文件之前寫過了,這里就不拿來混字?jǐn)?shù)了。
總結(jié)
以上是生活随笔為你收集整理的【微信小程序】实现手写电子签名并保存为图片功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js调用pc摄像头实现拍照、录视频等,新
- 下一篇: 一份【超级全面】的前端工程师的自检清单