之前做的微信端投票功能客戶反應系統卡、慢,非常不流暢,我們測試了幾次並沒有發現問題,后來察覺到可能是圖片大小的問題,於是在手機流量網絡下測試才發現,用戶上傳的圖片一般都在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左右,項目流暢度大幅提升。
存在的問題:壓縮圖片只能在用戶上傳圖片后進行,如果用戶上傳的圖片很大,網絡不好,依然需要大量的時間,如果能在用戶上傳前就壓縮好圖片就好了