1、需要给产品左右一个分享的功能,需要把经纪人的信息和二维码和产品海报放在一起,写一个简单的demo,废话不多说直接上代码
drawImage(){
let _this = this;
let canvas = document.createElement('canvas');
let ctx = canvas.getContext('2d');
canvas.width = 750;
canvas.height = canvas.width*750/375;
let img1 = new Image(), img2 = new Image();
img1.src = '../../static/img/recruitment.png';
img2.src = '../../static/img/xinyidaiercode.png'
// 加载img
let pm1 = new Promise((res, reject)=>{
img1.onload = ()=>{
res();
}
})
let pm2 = new Promise((res, reject)=>{
img2.onload = ()=>{
res();
}
})
// 两张图片加载完之后绘制于canvas中
// 绘制图片的时候需要从本地加载完之后才能进行绘制,需要使用onload和promise对象,all方法为了等两张图片全都加载完之后再执行
let drawALLImg = Promise.all([pm1, pm2]).then((res)=>{
ctx.drawImage(img1, 0,0,canvas.width, canvas.height)
ctx.drawImage(img2, canvas.width/3, 500,200, 200)
})
drawALLImg.then(()=>{
ctx.font = 'bolder 36px Microsoft YaHei';
let left = canvas.width*0;
let top = canvas.height*0.02;
ctx.fillText('xxxx', left, top);
_this.imgUrl = canvas.toDataURL("image/png");
})
},
遇到的一点小坑就是,合成图片的时候加上文字发现文字没有了,后面发现是被覆盖了,文字需要需要再图片之后加载;