收藏
回答

ios使用小程序canvas2d使用wx.canvasToTempFilePath怎么是白图?

 changeImgPx(url: string, width: number, height: number): Promise<string> {
    return new Promise((resolve, reject) => {
      const query = wx.createSelectorQuery()
      query.select('#js-img-ctrl-canvas')
        .fields({
          node: true,
          size: true
        })
        .exec((res) => {
          const canvas = res[0].node
          const ctx = canvas.getContext('2d')
          let img = canvas.createImage()
          img.src = url
          img.onload = () => {
            ctx.drawImage(img, 00, width, height);
            setTimeout(() => {
              wx.canvasToTempFilePath({
                canvas,
                destWidth: width,
                destHeight: height,
                fileType: 'jpg',
                quality: 1,
                success: (outRes) => {
                  resolve(outRes.tempFilePath)
                },
                fail: (err) => {
                  reject(err)
                }
              })
            }, 2000)
          }
        })
    })
  },



先使用canvas2d的drawImage, 然后使用wx.canvasToTempFilePath, 就是白图. 安卓一切正常, ios不行是白图
回答关注问题邀请回答
收藏

3 个回答

  • 社区技术运营专员-Jahozheng
    社区技术运营专员-Jahozheng
    04-14

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    04-14
    有用
    回复
  • 微盟
    微盟
    04-17

    需要把wx.canvasToTempFilePath这个写在ctx.draw的回调里面, draw函数的异步是假异步,如果直接保存,其实draw还没执行完

    04-17
    有用
    回复
  • 一笑皆春
    一笑皆春
    发表于小程序端
    04-13

    给画布设置一个背景色

    04-13
    有用
    回复 1
    • ZCDC
      ZCDC
      04-13
      不行唉 我画布设置的1440*810 ios drawimage就是白色的, 安卓正常显示图片
      04-13
      回复
登录 后发表内容