canvasTmp: function(arr2, store_name, successFn, errFun) {
let that = this;
const ctx = uni.createCanvasContext('myCanvas');
ctx.clearRect(0, 0, 0, 0);
/**
* 只能获取合法域名下的图片信息,本地调试无法获取
*
*/
uni.getImageInfo({
src: arr2[0],
success: function(res) {
const WIDTH = res.width*0.71;
const HEIGHT = res.height*1.04;
// const WIDTH = 320;
// const HEIGHT = 450;
let r = 70;
let d = r * 2;
let cx = 85;
let cy = 110;
ctx.drawImage(arr2[1], 0, 0, WIDTH, HEIGHT); // 小图
ctx.save();
ctx.arc(cx + r, cy + r, r, 0, 2 * Math.PI);
ctx.drawImage(arr2[0], cx, cy, d, d); // 背景
ctx.restore();
const CONTENT_ROW_LENGTH = 40;
let [contentLeng, contentArray, contentRows] = that.textByteLength(store_name, CONTENT_ROW_LENGTH);
if (contentRows > 2) {
contentRows = 2;
let textArray = contentArray.slice(0, 2);
textArray[textArray.length - 1] += '......';
contentArray = textArray;
}
ctx.setTextAlign('center');
ctx.setFontSize(26); // 文字
ctx.setFillStyle('#000000');
let contentHh = 26 * 1.3;
for (let m = 0; m < contentArray.length; m++) {
ctx.fillText(contentArray[m], 156, 430 + contentHh * m);
}
ctx.setTextAlign('left')
ctx.setFontSize(28);
ctx.setFillStyle('#FFFFFF');
ctx.draw(true, function() {
uni.canvasToTempFilePath({
canvasId: 'myCanvas',
fileType: 'png',
destWidth: WIDTH,
destHeight: HEIGHT,
success: function(res) {
uni.hideLoading();
successFn && successFn(res.tempFilePath);
},
fail: function(err) {
uni.hideLoading();
errFun && errFun(err);
}
})
});
},
fail: function(err) {
uni.hideLoading();
that.Tips({
title: '无法获取图片信息'
});
errFun && errFun(err);
}
})
},
调用 :
async spreadMsg(image ,name, title) {
let that = this
/** #ifndef H5 type: 'h5', #endif #ifdef MP || APP || APP-PLUS #endif*/
let rqData = {
type: 'routine'
}
that.spreadData = [that.bgurl[that.type]]
that.nickName = name
that.siteName = title
let codeUrl = ""
// #ifdef MP || APP-PLUS
let mpUrl = await that.downloadFilestoreImage(image)
// #endif
uni.showLoading({
title: '海报生成中',
mask: true
});
// 本来这个是个循环 也就是出现多个海报 去除了
let arr2
// #ifdef MP || APP-PLUS
arr2 = [mpUrl, await that.downloadFilestoreImage(that.bgurl[that.type])]
// #endif
// #ifdef H5
let img = await that.imgToBase(that.bgurl[that.type])
arr2 = [await that.imgToBase(image), img]
// #endif
that.$util.canvasTmp(arr2, name, (tempFilePath) => {
that.$set(that.posterImage, 0, tempFilePath);
}, (err) => {
that.$set(that, 'canvasStatus', false);
});
uni.hideLoading();
},
that.$util.PosterCanvasMer(arr2, name, (tempFilePath) => {
that.$set(that.posterImage, 0, tempFilePath);
}, (err) => {
that.$set(that, 'canvasStatus', false);
});