【uniapp小程序-分享】
2023-12-18 14:55:31
//分享到聊天
onShareAppMessage() {
let shareMessage = {
title: this.liveInfo.wx_title,
path: '/subPages/livePages/liveCourse/live_course_info?courseid=' +
this.courseid,
imageUrl: this.liveInfo.wx_thumb
};
let shearMsg = uni.getStorageSync('shearImg' + this.courseid);
if (shearMsg && shearMsg.id == this.courseid) {
return {
title: shareMessage.title,
path: shareMessage.path,
imageUrl: `${this.liveInfo.wx_thumb}?imageView2/1/w/640/h/360`|| shearMsg.imgPath
};
} else {
uni.showLoading({
title: '分享图片生成中...',
icon: 'none'
});
return new Promise((resolve, reject) => {
this.shareCode()
.then(res => {
uni.hideLoading();
let img = res
uni.hideLoading();
resolve({
title: shareMessage.title,
path: shareMessage.path,
imageUrl: img
});
// 将分享图片加入缓存
let msg = {
imgPath: img,
id: this.courseid
};
uni.setStorageSync('shearImg' + this.courseid, msg);
})
.catch(err => {
uni.hideLoading();
resolve({
title: shareMessage.title,
path: shareMessage.path,
imageUrl: imgPath
});
});
});
}
},
// 分享到朋友圈
onShareTimeline() {
return {
title: this.liveInfo.name,
path: '/subPages/livePages/liveCourse/live_course_info?courseid=' +
this.courseid,
imageUrl: this.liveInfo.wx_thumb
};
},
methods:{
// 分享卡片
shareCode() {
let _this = this;
return new Promise(async (resolve, reject) => {
const ctx = uni.createCanvasContext('shareCanvas', this);
let bg = this.liveInfo.wx_thumb
let bt = '背景图';
ctx.draw();
ctx.save();
await uni
.getImageInfo({
src: bg
})
.then(res => {
if (res[1].errMsg == 'getImageInfo:ok') {
ctx.save();
ctx.drawImage(res[1].path, 0, 0, 195, 160);
ctx.restore();
} else {
uni.$u.toast('海报生成失败');
}
});
ctx.restore();
// 生成图片
ctx.draw(true, ret => {
setTimeout(() => {
uni.canvasToTempFilePath(
{
canvasId: 'shareCanvas',
success: res => {
resolve(res.tempFilePath);
},
fail: err => {
uni.$u.toast('分享图片生成失败');
}
},
_this
);
}, 10);
});
});
},
textPrewrap(ctx, content, drawX, drawY, lineHeight, lineMaxWidth, lineNum) {
var drawTxt = ''; // 当前绘制的内容
var drawLine = 1; // 第几行开始绘制
var drawIndex = 0; // 当前绘制内容的索引
// 判断内容是否可以一行绘制完毕
if (ctx.measureText(content).width <= lineMaxWidth) {
ctx.fillText(content.substring(drawIndex, i), drawX, drawY);
} else {
for (var i = 0; i < content.length; i++) {
drawTxt += content[i];
if (ctx.measureText(drawTxt).width >= lineMaxWidth) {
if (drawLine >= lineNum) {
ctx.fillText(content.substring(drawIndex, i) + '..', drawX, drawY);
break;
} else {
ctx.fillText(content.substring(drawIndex, i + 1), drawX, drawY);
drawIndex = i + 1;
drawLine += 1;
drawY += lineHeight;
drawTxt = '';
}
} else {
// 内容绘制完毕,但是剩下的内容宽度不到lineMaxWidth
if (i === content.length - 1) {
ctx.fillText(content.substring(drawIndex), drawX, drawY);
}
}
}
}
},
}
文章来源:https://blog.csdn.net/weixin_47416539/article/details/135060891
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!