2.1版本,微信小游戏截图卡顿3-4秒,差点的机器直接卡死了

用的是官方例子的capture_to_wechat.js的代码, 而且安卓机的表现和ios耗时差别很大



第二张是安卓机小米NOTE3的时间戳显示
第三张是IPHONE 7P的耗时显示
let start = srow * width * 4; 改为 let start =Math.floor(srow * width * 4),也试过了,效果不大

求大神指导?

测试机是小米6
参照工程:examples-case.zip (1.2 MB)
有三个截图

截图1是官方示例中的方案,测试结果总共截图用了2.3s,大部分耗时是在创建截图的图片data上面

截图2针对截图1,在创建ImageData上面稍微优化了一下,不是每一行去创建一行的ImageData,而是建立一个大的ImageData,直接针对像素做处理,节省了一部分alloc的开销:


总计耗时大概1.9s,提升了一点

截图3的话应用的场景可能会比较特殊,不具有通用性,目前测下来canvas的大小以及坐标变化,摄像机的坐标变化的时候,不影响截图效果。不过一些特殊的情况可能会有问题,小心使用:


总共耗时大概0.6s,提升比较大。

优化方案仅供参考

另外可以参考的帖子:https://forum.cocos.com/t/cocoscreator/72580
虽然是讨论原生的截图,与微信小游戏的环境不同,但也有一定的参考价值