1.获取手机宽度 进而设置canvas画布的宽度
onLoad() {
let that = this;
// 获取系统信息,设置canvas宽高
wx.getSystemInfo({
success(res) {
that.setData({
canvasWidth: res.windowWidth
})
}
})
},
2.获取图片信息 将图片保存到本地路径然后再去绘制, 不然容易出现canvas画不上然后保存图片到本地时候出现空白的问题
make:function(url){
var that=this;
console.log(url);
//获取图片信息
wx.getImageInfo({
src: url,
success: function(res){
console.log(JSON.stringify(res));
that.setData({
imgInfo:res
});
console.log(JSON.stringify(that.data.imgInfo));
let imageSize = util.imageZoomHeightUtil(that.data.imgInfo.width, that.data.imgInfo.height);//根据屏幕宽度
that.setData({ canvasHeight: imageSize.imageHeight });
console.log('imageSize等比例' + JSON.stringify(imageSize));
that.makeCanvas(url);
}
})
},
3.开始绘制图 ctx.draw(false, this.drawCallBack)一定要执行后面的回调函数
makeCanvas: function (url) {
var ctx = wx.createCanvasContext('canvas')
ctx.drawImage(url, 0, 0, this.data.imgInfo.width, this.data.imgInfo.height, 0, 0, this.data.canvasWidth, this.data.canvasHeight);
ctx.draw(false, this.drawCallBack)
},
drawCallBack: function () {
var that = this
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: that.data.canvasWidth,
height: that.data.canvasHeight,
canvasId: 'canvas',
fileType: 'jpg',
success: function (res) {
// wx.hideLoading();
that.setData({
'img': res.tempFilePath
});
console.log('ok');
},
fail: function (res) {
wx.hideLoading();
wx.showToast({
icon: 'none',
title: '生成失败!',
});
}
})
},
完整demo源码下载地址:https://download.youkuaiyun.com/download/lmx15063393957/11259093