wxml
<canvas canvas-id="shareCanvas" style="width:750px;height:1334px;position:absolute;bottom:-800%" />
-800%是不想在页面上显示,若需要在页面上显示请自行设置
js
getCanvas() {
const that = this
const ctx = wx.createCanvasContext('shareCanvas')
wx.showLoading({
title: '保存中',
})
wx.downloadFile({//网络图片需要先下载
url: xxx,//图片地址
success(a) {
ctx.drawImage(a.tempFilePath, 0, 0, 750, 1334)//绘制图像,图片,x轴,y轴,宽,高
ctx.draw()//绘制上下文
wx.downloadFile({//下载第二张图片以此类推(图片下载顺序自己决定)
url: xxx,//图片地址
success(a) {
ctx.setFontSize(36)//设置字体大小
ctx.fillText(that.data.userInfo.nickname, 275, 1000);//要写的文字和位置
ctx.arc(380, 870, 60, 0, 2 * Math.PI)//创建一条弧线(x轴加上半径,y轴加上半径,半径就是宽/2,起始弧度,终止弧度)创建一个圆可以指定起始弧度为 0,终止弧度为 2 * Math.PI
ctx.clip();//从原始画布中剪切任意形状和尺寸。
ctx.drawImage(a.tempFilePath, 320, 810, 120, 120)//图片,x轴,y轴,宽,高(若要画正圆此处宽高需要一致)
ctx.draw(true)
setTimeout(() => {//因为有延迟所以延迟调用
wx.canvasToTempFilePath({//把当前画布指定区域的内容导出生成指定大小的图片。
canvasId: 'shareCanvas',
success: function (b) {
console.log(b)
wx.hideLoading()
wx.saveImageToPhotosAlbum({//保存图片到手机
filePath: b.tempFilePath,
success: (result) => {
wx.showToast({
title: '保存成功',
icon: 'none'
})
},
complete() {
wx.hideLoading()
}
})
},
fail: function (res) {
console.log(res);
}
});
}, 500);
}
})
}
})
},