收藏
回答

【Bug】wx.canvasToTempFilePath 输出空白图片或图片不全

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.canvasToTempFilePath 微信iOS客户端 8.0.48 3.3.4

基本信息:iPhone15 Pro, iOS 17.3.1, WeChat 8.0.48

复现步骤:

  1. 打开代码片段,在开发者工具上推送到手机端预览,可见图片为空白(透明); 如果无法复现,请在手机上删除小程序后再多试几次;
  2. 如果 canvas 绘制完成后加一个延时(pages/index/index.js Line: 80)后再调用 wx.canvasToTempFilePath 则可以正常输出完整图片,但延时时间无法确定

回答关注问题邀请回答
收藏

2 个回答

  • undefined
    undefined
    11-11

    您好请问这个问题解决了吗

    11-11
    有用
    回复 1
    • 北方
      北方
      11-25
      目前还是绘制完成后延时300ms再去调用canvasToTempFilePath这种方式,并没有完全解决,但成功率非常高
      11-25
      回复
  • Wei
    Wei
    03-27

    因为canvas的绘制是一个耗时操作,你在执行drawImage后立即执行就会导致获取不到或者获取不完整。

    你尝试这样修改呢,看看是否生效。因为没有ios手机无法复现

    wx.nextTick(async() => {

          console.log('绘制完成');

          // 在这里可以进行绘制完成后的操作

          const image = await canvasToImage(canvas, this)

          this.setData({

            image

          })

          console.log('canvasToImage: ', image)

        });


    03-27
    有用
    回复 1
    • 北方
      北方
      03-28
      在 web 端就不需要加延时就可以稳定生成图片,但是微信小程序这个就需要加延时,nextTick 的时间也没办法保证稳定输出,从现状来看,canvas 越大就需要延时越久
      03-28
      回复
登录 后发表内容