小程序提供了Canvas绘图的API,咱们很轻松就能够应用Canvas绘制一张图片并保留下来。本次案例应用绘制证件照的形式演示Canvas的示例。

筹备

去掉背景的证件照(宽160px,高230px)

代码

index.wxml

<!-- Canvas 2D组件 --><canvas canvas-id="firstCanvas" class="firstCanvas"></canvas><!-- 保留按钮 --><button bindtap="saveimg" class="saveimg">保留到相册</button>

index.wxss

.firstCanvas{      width: 160px;      height: 230px;      margin:30px auto 0;}.saveimg{      margin-top: 30px;}

index.js

Page({  canvasIdErrorCallback: function (e) {    console.error(e.detail.errMsg)  },  onReady: function (e) {    // 应用 wx.createContext 获取绘图上下文 context    var context = wx.createCanvasContext('firstCanvas')    // 设置边框色彩    context.setStrokeStyle("#fff")    // 设置边框粗细    context.setLineWidth(0)    // 设置背景色彩    context.setFillStyle("#f00")    context.fillRect(0, 0, 160, 230)    // 将人像绘制下来    context.drawImage('../images/1.png',0,0,160,230)    // 创立一个矩形    context.rect(0, 0, 160, 230)    context.stroke()    context.draw()  },  // 保留图片到相册  saveimg(){    var that = this;    // 先将Cnavas绘制成临时文件    wx.canvasToTempFilePath({      x: 0,      y: 0,      width: 160,      height: 230,      destWidth: 160,      destHeight: 230,      canvasId: 'firstCanvas',      success(res) {        console.log(res.tempFilePath)        // 再保留到相册        wx.saveImageToPhotosAlbum({          filePath:res.tempFilePath,          success(res) {             wx.showToast({              title: '已保留',              icon: 'success',              duration: 2000            })          }        })      }    })  }})

演示

作者

TANKING
https://github.com/likeyun