現(xiàn)在基本所有應(yīng)用都與圖片相關(guān)聯(lián)携茂,這就必然涉及到上傳下載圖片,而用戶的流量又遲遲沒有被解放伍俘,因此圖片就不能太大粘咖,我們知道iPhone一張照片動輒幾M蚣抗,如果都傳原圖那流量就會爆炸,粗暴地縮小又會影響圖片的分辨率瓮下。那有沒有辦法在保持一定分辨率的情況下壓縮圖片呢翰铡?有的设哗,而且非常簡單,一行代碼搞定两蟀,是蘋果自帶的壓縮函數(shù):
- UIImageJPEGRepresentation
- UIImagePNGRepresentation
這兩個(gè)函數(shù)都是iOS自帶的圖片壓縮工具。一個(gè)是壓成JPEG格式震缭,一個(gè)是壓成PNG格式赂毯。一般來說,JPEG格式壓縮出的圖片的大小都會小于PNG格式的拣宰。
UIImageJPEGRepresentation函數(shù)傳入兩個(gè)參數(shù)党涕,要壓縮的圖片UIImage以及一個(gè)壓縮系數(shù)(0.0~1.0)。
而UIImagePNGRepresentation只需要傳入一個(gè)參數(shù)巡社,即要壓縮的圖片UIImage膛堤。
兩個(gè)函數(shù)都返回NSData格式的數(shù)據(jù)掏膏,要還原成圖片的話直接用UIImage的imageWithData方法初始化就可以啦恳谎。
再談?wù)剦嚎s效果,上面說了宴咧,UIImageJPEGRepresentation壓縮后的大小一般都會小于UIImagePNGRepresentation格式朝群。就我的測試結(jié)果來看燕耿,UIImagePNGRepresentation壓縮一張圖片后是幾百K,UIImageJPEGRepresentation壓縮后只有一百多K姜胖,如果將壓縮系數(shù)寫為0.5誉帅,更是能壓縮到幾十K的大小,而且圖片的清晰度肉眼基本看不太出來右莱,不得不說簡直是神器蚜锨!所以,如果沒有別的要求慢蜓,直接用UIImageJPEGRepresentation瘋狂地壓縮吧亚再,根據(jù)效果來調(diào)整系數(shù)達(dá)到最好的結(jié)果就可以了~