减小小程序因图片占内存
第一次写小程序,图片的路径一般都是放在文件的本地路径,使用起来还是方便的,但是在提交小程序或者是在真机预览测试时,就出现了内存超过2M而不让发布或者预览,所以我想到的就是将图片都换成网络路径来使用,从而减少本地因为图片所占的内存。
但是更换过程中有因为我的程序中大量使用了 画布(canvas),导致一些放在画布里面的图片不能直接使用网络路径,开始我觉得没什么事情,大不了就把这一部分都放到本地文件里,但是后来我发现我使用的画布图片越来越多了,本地文件的内存又一次达到了顶峰,所以就查了很多资料,问了大佬们的意见,最后发现可以使用wx.getImageInfo来将网络路径的图片转换成本地路径,来往画布里面放。接下来就有了一系列的操作
如果画布里面只有一张图片的话我们就可以这样
wx.getImageInfo({
// 这里的路径也可以事先在data里面定义好,然后这里就可以直接调用了
src: '图片的网络路径',
success:(res) =>{
console.log('res::',res)
ctx.drawImage(res.path,x,y,w,h);
...
ctx.draw(); //输出到画布中
}
})
如果有多张图片,而且每张图片的位置都不一样的话
wx.getImageInfo({
src: '第一张图片的网络路径',
success:(res1) =>{
console.log('res1::',res1)
wx.getImageInfo({
src: '第二张图片的网络路径',
success:(res2) =>{
console.log('res2::',res2)
ctx.drawImage(res1.path,x,y,w,h);
ctx.drawImage(res2.path,x,y,w,h);
...
ctx.draw(); //输出到画布中
}
})
}
})
如果需要的图片过多的话,刚好他们的位置一样,就可以直接定义数组,然后遍历出来,去使用,这个我就不再举例子了
因为我的这个案例写的比较的绕路,总之就是多张图片就可以使用数组,然后在使用时去遍历使用
还有什么更好的办法,欢迎各位留言评论,以上是我的分享