uni-app 绘制二维码图片(用于小程序)

2,040 阅读1分钟

1.生成带参的二维码:(用的插件是tki-qrcode)

我参考的网址:
我没有安装,直接是在components引用里面的两个文件文件;

image.png

git clone github.com/q310550690/… blog.csdn.net/qq_43455397…

2.下载图片成为临时链接

在小程序中,下载图片不能一次下载多张,只能一张一张下载
同时小程序的下载,需要在小程序的downloadFile合法域名中设置你的域名,否则会报不是合法域名

在下载图片的方法中,用Promise封装;用的时候用Promise.all是否完成; image.png

this.imgArr = ['image1.png','image2.png'];
let mainImg = _this.imgArr.map(img => _this.wxOnloadImg(img)); //调用下载图片方法
Promise.all(mainImg).then(imgDown => {
//保存图片
//进行绘制
})

3.绘制图片

绘制圆形头像,先绘制圆形,然后把图片放入圆形中裁剪 绘制成功,一定要写在draw回调里面,否则会经常绘制不出来

//canvas的位置,这样在页面上就显示不出来
<canvas style="width: 602px; height: 938px;position:absolute;left:-1000px;top:-1000px;" canvas-id="firstCanvas" id="firstCanvas"></canvas> 				
var context = uni.createCanvasContext('firstCanvas');	
context.drawImage(params.bigBg,0,0,602,938);
context.setFillStyle('#ffffff'); //文字颜色
context.setFontSize(28); //字号
context.fillText(params.name, 140, 80, ); //绘制文字		
context.beginPath(); //绘制圆形头像开始				
context.arc(82,82, 38, 38, Math.PI * 2);
context.setFillStyle('#fff');
context.fill();
context.clip();
context.drawImage(params.headImg,41,41,76,76) // 推进去图片
context.restore();
context.draw(false,()=>{ //false是否保留画布,后面是回调
        uni.canvasToTempFilePath({
          canvasId: 'firstCanvas',
          success: function(res) {	
              //图片绘制成功操作
              //res.tempFilePath 为图片链接;
              //h5平台下,res.tempFilePath 为 base64
          },
          fail:function(res){
                  console.log(res);
          }
        })	
});