微信小程式 解決將畫布的內容匯出生成圖片,image在某些安卓機器上不顯示的問題
阿新 • • 發佈:2019-02-07
解決思路:由於畫二維碼用的庫一直沒有更新,呼叫的是 wx.createContext(),
wx.drawCanvas({
canvasId: canvas,
actions: ctx.getActions()
});
這兩個介面來繪製畫布,其實看官方文件就能發現,wx.createContext (不推薦使用),所以推薦使用wx.createCanvasContext(canvasId, this),這個的draw方法是帶有回撥函式的,這樣我們也不用settimeout了,直接在回撥成功的情況下,再呼叫wx.canvasToTempFilePath就可以了。
js檔案:
const _this = this; QR.qrApi.draw(text, 'qr-code', width, height, '', () => { wx.canvasToTempFilePath({ canvasId: 'qr-code', success(res) { _this.setData({ QRImgUrl: res.tempFilePath }) }, fail(res) { console.log(res); } }) }); },
這裡的QR.qrApi.draw是繪製畫布的方法,因為是在原有程式碼的基礎上進行的修改,其實就相當於:
ctx = wx.createCanvasContext(canvas), ctx.draw(false, () => { wx.canvasToTempFilePath({ canvasId: 'qr-code', success(res) { _this.setData({ QRImgUrl: res.tempFilePath }) }, fail(res) { console.log(res); } })
同時,在data中記得定義一個QRImgUrl,最後在wxml中,傳給Image的scr,在Image中展示出來。