问题描述
微信小程序canvas真机不显示,电脑可以显示,手机调试模式下仅显示第一张图片,第二张base64图片不显示,真机下完全不显示
问题出现的环境背景及自己尝试过哪些方法
// 试过去除空格 换行
// 转成buffer又转base64
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
//点击事件
show: function() {
var that = this;
var ctx = wx.createCanvasContext('firstCanvas');
wx.getImageInfo({
src: that.data.showPic,//showPic图片url
success: function(res) {
ctx.drawImage(res.path, 0, 0, 250, 250);
ctx.draw(true);
// Qr 是二维码的base64地址 /9.........
// Qr= "data:image/png;base64," + base64,
// var array = wx.base64ToArrayBuffer(res);
// var base64 = wx.arrayBufferToBase64(array);
// res = res.replace(/ +/g, "");
// res = res.replace(/[\r\n]/g, "");
// 试过去除空格 换行
// 转成buffer又转base64
ctx.drawImage(that.data.Qr, 20, 290, 80, 80);
ctx.draw(true);
ctx.setFillStyle('#333');
ctx.setFontSize(12);
ctx.fillText("长按识别小程序", 175, 335);
ctx.draw(true);
},
fail: res => {}
})
},
你期待的结果是什么?实际看到的错误信息又是什么?
两张图片都显示
题主这个问题是 fillText 导致的,你把 fillText 注释掉应该就可以看到绘制,据说 canvas.fillText 是异步的,可以使用 setTimeout 来异步绘制,不过我自己也在找更合适的办法解决... 太坑爹了
对了,我说的这个也是只有模拟器可以显示,或者 Debug 远程调试可以,但是真机直接预览是不显示的,白屏状态