iOS中圖片壓縮的常見方法

      開發中經常會碰到從手機相冊中選擇圖片的需求,選擇圖片這個過程是一個消耗性能的過程,取決於手機圖片的大小,如果手機像素非常高,圖片的尺寸非常大,這個時候就會變得很消耗性能,比如一張圖片5兆,這個時候選擇後加載的時候就會有些卡頓,內存開始大幅升高,仔細想想也沒有這種必要去加載這麼大的圖片,所以總結了兩種處理方法,提供參考

1:對圖片進行壓縮,iOS的API中提供了函數進行壓縮,代碼如下:

NSData *imageData = UIImageJPEGRepresentation(image, 0.5);

這個返回的是二進制的data值,可以通過打印知道大小確實減少了好多,通過此方法確實能優化性能,需要注意的是這個0.5,並不是說壓縮到之前圖片的二分之一 
,應該是個係數之類的數值,這樣的話圖片壓縮之後性能會好很多,但是不建議這個,因爲解壓縮的時候很耗費性能建議使用第二種方法

2:根據image從新繪製一張新的圖片出來,第一種的方法多多少少會有些失真,第二種方法是根據圖片從新繪製一張出來,不會失真,只是改變圖片的大小,比如之前是5000 * 5000的分辨率,
這個時候你壓縮後可能就只有500 * 500 ,不會失真,只會改變大小,建議使用,方法如下:

- (UIimage *)imageWithImage:(UIImage*)image
          scaledToSize:(CGSize)newSize;
{
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

}如上兩種方法,即可簡單實現壓縮圖片的功能,更深入的話就要圖像編碼之類的知識了估計,記錄下以備忘

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章