微信小程序canvas畫海報總結-2 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

微信小程序canvas畫海報總結-2

發表時間:2021-1-8

發布人:葵宇科技

浏覽次數:24

坑爹的微信,使用canvas 2D的方式, 必須用createImage這個(gè)API,偏偏這個(gè)API挂了,所以下(xià)面使用另一種方式實現海報.

主要由微信推薦的canvas 2D方式更換為微信即将遺棄的老canvas實現方式,因此能夠避免使用createImage這個(gè)API.其他的實現方式和(hé)思路(lù)是和(hé)微信小程序canvas畫海報總結-1一樣的.


不同之處

1. canvas聲明方式不同

wxml, 不再聲明type=2d, id屬性

<canvas canvas-id="c3" class="canvas1" style="width: {{canvasStyle.width}}rpx; height: {{canvasStyle.height}}rpx;"></canvas>
複制代碼

js, 獲取context對象

const ctx = wx.createCanvasContext(canvasId);
複制代碼

2. 加載圖片,避開createImage這個(gè)挂掉的API

主要用wx.getImageInfo獲取到圖片文(wén)件的臨時本地路(lù)徑,便于調用ctx.drawImage畫圖片

wx.getImageInfo({
        src: imgUrl,
        success (res) {
          resolve(res);
        },
        fail(e) {
          business.toast.show('海報圖片加載失敗,請稍後重試~', 'none');
          reject(e);
        }
      })
複制代碼

3.ctx.draw回調函數

要下(xià)載canvas畫出來的圖片,就必須在ctx.draw的回調函數内調用wx.canvasToTempFilePath,最終完成下(xià)載

ctx.draw(false, async () => {
      try {
        const tempPath = await haibaoUtil.createHaibaoUrl(canvasId, this.data.canvasStyle);
        this.save(tempPath);
      } catch(e) {
        console.error(e);
        logger.error('保存海報圖片失敗, 請稍後重試~',e);
      }
    });
createHaibaoUrl(canvasId, canvasStyle) { return new Promise((resolve, reject) => { wx.canvasToTempFilePath({ x: 0, y: 0, width: this.computedWAndD(canvasStyle.width), height: this.computedWAndD(canvasStyle.height), destWidth: canvasStyle.width*3, destHeight: canvasStyle.height*3, canvasId: canvasId, fileType: 'png', success(res) { resolve(res.tempFilePath); }, fail(error) { reject(error); } }) }); }, 複制代碼

相關(guān)案例查看更多