1. 程式人生 > >微信小程式 解決將畫布的內容匯出生成圖片,image在某些安卓機器上不顯示的問題

微信小程式 解決將畫布的內容匯出生成圖片,image在某些安卓機器上不顯示的問題

解決思路:由於畫二維碼用的庫一直沒有更新,呼叫的是 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中展示出來。