之前做的微信端投票功能客户反应系统卡、慢,非常不流畅,我们测试了几次并没有发现问题,后来察觉到可能是图片大小的问题,于是在手机流量网络下测试才发现,用户上传的图片一般都在2M左右,所以导致在网络不好时,系统反应太慢,而且也浪费很多图片流量;
开发时没有发现是因为一直都在网速很好的wifi环境下测试,所以忽视了图片太大占用流量的问题。
所以要对用户上传的图片进行压缩,压缩到时候手机显示的图片质量,以后就忽略原图,全部使用压缩后的新图;
ThinkPHP在图片上传后有自动压缩一张新图片的功能,新图片的名字时原图前面加thumb__,放在同一个文件夹下;
使用案例如下
import('ORG.Net.UploadFile'); $upload = new UploadFile(); $upload->maxSize = 4194304; $upload->allowExts = array('jpg', 'gif', 'png', 'jpeg'); $upload->savePath = 'Public/Mxun/vote/'; //略所图 $upload->thumb = true; //开启略所图 $upload->thumbType = 0; //保持原始比例 $upload->thumbMaxWidth = '50,480'; $upload->thumbMaxHeight = '50,640';
压缩后的图片大约在30kb左右,项目流畅度大幅提升。
存在的问题:压缩图片只能在用户上传图片后进行,如果用户上传的图片很大,网络不好,依然需要大量的时间,如果能在用户上传前就压缩好图片就好了