大小写? onShow???
公众号跳转小程序不走onshow?从公众号菜单点击进入小程序某个页面,不走页面的onshow事件
2020-04-28经过测试发现最主要的问题是:measureText的性能好像比较低,生成长文时多次调用API,导致生成海报很慢。 解决方法:把measureText换成下面的方法: 测试结果:保存的速度提升了。。。。。。奈斯 最后:感谢大佬们回答问题!膜拜! measureText(text, fontSize = 28) { text = String(text); // var text = text.split(''); var width = 0; // text.forEach(function(item) { if (/[a-zA-Z]/.test(text)) { width += 7; } else if (/[0-9]/.test(text)) { width += 5.5; } else if (/\./.test(text)) { width += 2.7; } else if (/-/.test(text)) { width += 3.25; } else if (/[\u4e00-\u9fa5]/.test(text)) { //中文匹配 width += 10; } else if (/\(|\)/.test(text)) { width += 3.73; } else if (/\s/.test(text)) { width += 2.5; } else if (/%/.test(text)) { width += 8; } else { width += 10; } // }); return width * fontSize / 10; }
canvas生成几千字长文海报生成很慢?需求:根据文本内容生成长文海报。 问题: canvas有没有限制的高度,如:height:10000px(现在就是这样设置)canvas生成长文海报,在预览模式下生成比较快,但是在线上生成很慢。代码片段:https://developers.weixin.qq.com/s/20IzsTmK7Fg3
2020-04-28问下这个性能差怎么优化??? 生成长图文章的时候,真机调试性能真的很差。。。[图片]
CanvasContext.measureText的性能是不是很低?在使用measureText的时候,canvas的绘制非常耗时,一张简单的页面也需要10s左右,开发工具在真机上调试时会出现“API measureText加载中”之类的提示(调试环境速度很快)。是我的使用方式不对吗?有办法优化吗? 代码如下: [代码]textProcess: [代码][代码]function[代码][代码](canvas, text, width, line) {[代码][代码] [代码][代码]let chr = text.split([代码][代码]''[代码][代码])[代码][代码] [代码][代码]let temp = [代码][代码]''[代码][代码] [代码][代码]let rowArray = [][代码] [代码] [代码][代码]for[代码] [代码](let i = 0; i < chr.length; i++) {[代码][代码] [代码][代码]if[代码] [代码](canvas.measureText(temp).width + canvas.measureText(chr[i].toString()).width < width) {[代码][代码] [代码][代码]temp += chr[i][代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]i-- [代码][代码]//这里添加了a-- 是为了防止字符丢失[代码][代码] [代码][代码]rowArray.push(temp)[代码][代码] [代码][代码]temp = [代码][代码]""[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]rowArray.push(temp)[代码] [代码] [代码][代码]if[代码] [代码](rowArray.length > line) {[代码][代码] [代码][代码]let arrayPart = rowArray.slice(0, line)[代码][代码] [代码][代码]let row = arrayPart[line - 1][代码][代码] [代码][代码]let tempString = [代码][代码]''[代码][代码] [代码][代码]let tempRow = [][代码][代码] [代码][代码]for[代码] [代码](let i = 0; i < row.length; i++) {[代码][代码] [代码][代码]if[代码] [代码](canvas.measureText(tempString).width + canvas.measureText(chr[i].toString()).width + canvas.measureText([代码][代码]'...'[代码][代码]).width < width) {[代码][代码] [代码][代码]tempString += row[i][代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]break[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]tempRow.push(tempString)[代码][代码] [代码][代码]let group = tempRow[0] + [代码][代码]'...'[代码][代码] [代码][代码]arrayPart.splice(line - 1, 1, group)[代码][代码] [代码][代码]rowArray = arrayPart[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]return[代码] [代码]rowArray[代码][代码] [代码][代码]},[代码] 插一句使用canvas的感受:开始以为绘制图片跟截图一样简单,结果发现必须使用canvas,一个简单的图片要花几天的时间去绘制,还特别丑,一下子感觉回到了用C语言的时代。。。
2020-04-28