问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 微信小程序 Bug onShareAppMessage 客户端 6.0.3 2.3.2
- 当前 Bug 的表现(可附上截图)
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
onShareAppMessage: function(e) {
let that = this;
console.log(e);
if (e.target) {
let videoId = e.target.dataset.videoId;
let title = e.target.dataset.title;
let cover = e.target.dataset.cover;
console.log("videoId is " + videoId);
console.log("title is " + title);
console.log("cover is " + cover); // cover是一张网络图片(https,证书未过期)
// ‘canvas’为前面创建的canvas标签的canvas-id属性值
let canvasW = 640;
let canvasH = 420;
if (750 / 420 > 5 / 4) { // 长宽比大于5:4
canvasW = 420 * 5 / 4;
}
// 将图片绘制到画布
ctx.drawImage(cover, (750 - canvasW) / 2, 0, canvasW, canvasH, 0, 0, canvasW, canvasH)
// draw()必须要用到,并且需要在绘制成功后导出图片
ctx.draw(false,function(res) {
// 导出图片
wx.canvasToTempFilePath({
width: canvasW,
height: canvasH,
destWidth: canvasW,
destHeight: canvasH,
canvasId: 'canvas',
fileType: 'png',
success: function(res) {
let img = res.tempFilePath;
console.log(img);
return {
title: title,
imageUrl: img,
path: "/pages/detail/detail?videoId=" + videoId
}
}
});
});
}
}
-提问:为什么canvasToTempFilePath里面的return的object不生效,分享出去的还是默认截屏的图片,而不是我裁剪好的图片
微信小程序开发问题解答
微信小程序开发者回答:
加一个前置步骤,比方说:
在点击分享的时候,先弹出一个弹窗(类似京东购物的分享),然后把canvas画出来,再进行分享(如果不想展示canvas,可把canvas画出来然后挪到屏幕外面去)
微信小程序开发者回答:
大佬,怎么保证微信截图一定能截到弹框呢?被这个问题搞崩溃了
微信小程序开发者回答:
你看看京东的那种操作就知道了。它是先把canvas画出来,点击按钮才保存的。而不是在保存前才去画canvas。
微信小程序开发者回答:
怎么改为同步?分享前裁剪要怎么做?
微信小程序开发者回答:
大佬,解决了吗?
微信小程序开发者回答:
里面有异步方法
微信小程序开发者回答:
怎么用异步?你成功过?求指教
微信小程序开发者回答:
就是里面不能用异步啊,要在分享前处理好
微信小程序开发者回答:
坑爹啊,不能重写官方的API,修改为同步的方法QAQ
本文网址:http://www.91bianli.com/kaifazhinan/78577.html