logo科技微讯

微信小程序 canvasToTempFilePath 获得的图片是透明或黑色或白色的

作者:科技微讯
日期:2025-03-02
📝 笔记

微信小程序在一个 canvas 上画图,最后通过 canvasToTempFilePath 导出图片,最后可能会获得一张或纯白色,或纯黑色,或纯透明的图片。如果导出的图片格式是 png 就是透明,如果是 jpg 就是黑色,如果在画图之前先把整个 canvas 画成白色的,那导出的图片无论是 jpg 还是 png 都是白色。

出现这个问题的一个常见原因是,对于旧版的 canvas,使用 draw 接口时,没有在其回调函数中执行 canvasToTempFilePath。解决方法就是在回调函数执行,且最好等 100 ~ 500ms 之后再执行。

问题可能还是没有解决,我观察到的现象:

  • 这个问题主要出现在 iOS 设备;
  • 显著降低导出的尺寸有机会能避免这个问题;
  • 尺寸和分辨率完全相同的两组图片,其中一组图片画到 canvas 之后再导出会出现该问题,而另一组图片却不会,所以可能和图片本身有关?例如色彩空间?
  • 把图片用 compressImage 压缩过之后画到 canvas 再导出,有时候可以避免这个问题;

解决方法:我还不知道。

donation赞赏
thumbsup0
thumbsdown0
暂无评论