生成分享海报时,部分安卓机导出的是空白图片。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
const img = canvas.createImage();
img.onload = () => { ctx.drawImage(img, 0, 0); wx.canvasToTempFilePath({canvas}); };
img.src = url;
图片资源尚未加载完成就开始绘制,或绘制完成后没有等待渲染就导出。这一点先确认清楚,后面就不用反复试。
「小程序海报」这类改动最怕改一半,回滚脚本先准备好,再动生产。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
具体做法是,先加载图片再绘制;绘制完成回调里导出;必要时加一帧延时。
改完照着核一遍,各机型生成的海报都有完整内容。