日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【微信小程序】实现手写电子签名并保存为图片功能

發(fā)布時間:2024/3/26 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【微信小程序】实现手写电子签名并保存为图片功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

需求概述:
微信小程序的一個功能,類似于畫板,用于電子簽名,要求有一鍵清空畫板和保存功能。

實(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文件

<view class="Container"><view class="PaintRegion"><!-- 畫板區(qū)域 --><canvas class="myCanvas" canvas-id="myCanvas" bindtouchstart="touchStart" bindtouchmove="touchMove" bindtouchend="touchEnd"></canvas></view><view class="BtnRegion"><!-- 按鈕區(qū)域,有保存,清空等按鈕 --><button type="primary" size="mini"bind:tap="clearCanvas">清空</button>   <button type="primary" size="mini"bind:tap="SaveImg">保存</button></view><!-- <view>圖片預(yù)覽區(qū)域<image class="" src="{{url}}"></image></view> --> </view>

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();},/*** 手指觸摸后移動*/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;//只是一個記錄方法調(diào)用的容器,用于生成記錄繪制行為的actions數(shù)組。context跟<canvas/>不存在對應(yīng)關(guān)系,一個context生成畫布的繪制動作數(shù)組可以應(yīng)用于多個<canvas/>wx.drawCanvas({canvasId: 'myCanvas',reserve: true,actions: this.context.getActions() // 獲取繪圖動作數(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則會清空畫布,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: '錯誤提示',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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。