canvasToTempFilePath 在 iphone X上失败
发布于 6 年前 作者 zzhong 5285 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

canvasToTempFilePath 在 iphone X 和 iPad Pro 真机上失败,报错canvasToTempFilePath:fail no image(工具内正常)。

在 iPhone 7 上正常。

在 iPhone 6 Plus 上直接连带微信本身一起崩溃 (可能是canvas 本身造成,canvas 尺寸为650rpx x 1000rpx )。

  • 预期表现
  • 复现路径
  1. 填充背景

  2. 再填充一个长方形

  3. 第2步的长方形描边

  4. wx.downloadFile 下载2张 PNG 图(不大),其中1张是小程序码

  5. 连带第4步的两张图,再加上3张本地图片,总共5张图,ctx.drawImage

  6. 画两个 text (一共不超过100个字符)

  7. ctx.draw(), draw的回调里调用 wx.canvasToTempFilePath

  • 提供一个最简复现 Demo
2 回复

解决问题了,原来是 canvas 的分辨率设太大了,在我问题里的分辨率其实 x 10 倍。

后来改为 x4 就OK了。

但是奇怪的是 iPhone 7 可以正常渲染,性能更好的 iPhone X 和 iPad Pro 竟然跑不动

一种情况一般都是canvas还没绘画完就调用wx.canvasToTempFilePath接口造成的,可以在ctx.draw()回调里设置延时一下调用这个接口wx.canvasToTempFilePath,或者搞一个点击保存的按钮在调用这个接口是最保险的。

回到顶部