async onShareAppMessage() { // console.log(this.listData.firstMessage); var _this = this ; // var zfimg = ""; const data = await new Promise( function (resolve) { wx.canvasToTempFilePath({ x: 0, y: 0, width: _this.rpx * 375, height: _this.canvasHeight1, destWidth: _this.rpx * 375 * _this.pixelRatio, destHeight: _this.canvasHeight1 * _this.pixelRatio, canvasId: "myCanvas1" , success: function (res) { console.log(res.tempFilePath); // zfimg = res.tempFilePath; resolve(res.tempFilePath); } }); }); console.log(data); //这里可以打印出图片路径 return { title: _this.listData.firstMessage, path: "/pages/index/main?id=" + _this.listData.id, imageUrl: data, success: res => { console.log( "转发成功" , res); }, fail: res => { console.log( "转发失败" , res); } }; }, |
这个转发图片应该展示我用canvas生成的图片
onShareAppMessage 不能是异步的哦,promise什么的,就当没有过一样。。
一样的,建议你在onShow 或者onLoad的时候,就把图画好。canvas用绝对定位放到屏幕外面。
谢谢我测试了好使了
哦哦
楼主,我也想用canvas画图作为onShareAppMessage的imageUrl,但是为啥我的显示不出来呢?帮看看啥问题吧,非常感谢
cropImg: function(imgSrc) {//调用这个函数由imgSrc图片生成一个新的图片保存在headShare 全局变量中
wx.getImageInfo({
src: imgSrc,
success: function(ret) {
var orWidth = ret.width
var orHeight = ret.height
ctx.drawImage(imgSrc, 0, orHeight * 1 / 10, orWidth, orHeight * 8 / 10, 0, 0, 500, 400);
ctx.draw(false, function() {
wx.canvasToTempFilePath({
canvasId: 'attendCanvasId',
fileType: 'jpg',
success: function(resl) {
wx.saveFile({//把文件保存到本地
tempFilePath: resl.tempFilePath,
success: function(res) {
headShare = res.savedFilePath
console.log(headShare)
}
})
}
}) //wx.canvasToTempFilePath end
}) //ctx.draw end
}
})
},
onShareAppMessage: function(res) {
console.log(headShare)//可以打印出图片本地路径
return {
title: xitieInfo.title,
path: '/pages/showxitie/showxitie',
imageUrl: headShare,
success: function(res) {
console.log('成功', res)
},
fail: function(res) {
// 转发失败
console.log('失败', res)
}
}
},
wx.canvasToTempFilePath 直接用这个生成的图片地址.不用保存到本地试试