ios圖片的壓縮

最近作圖片的上傳,因爲項目中的涉及到的圖片是從相冊和相機中拍照獲取的,因此圖片的類型不必定,有些是jpg有些是png,另外隨着如今設備相繼的像素愈來愈高,所拍攝的圖片也愈來愈到,在圖片上傳以前咱們是須要進行必定的處理的。最多見的是1.縮小圖片的尺寸。2:下降圖片的質量。針對以上兩種方法,我編寫了一個UIImage的Category.代碼以下:spa

//圖片

//  UIImage+Resize.h開發

//  hjclassit

//io

//  Created by alan chen on 14-4-17.圖片上傳

//  Copyright (c) 2014 alan chen. All rights reserved.class

//import

 

#import <UIKit/UIKit.h>map

 @interface UIImage (Resize)float

 - (UIImage*)scaleToSize:(CGSize)size;

- (UIImage*)compressToCompressent:(float)compress;

 

@end

 

//

//  UIImage+Resize.m

//  hjclass

//

//  Created by alan chen on 14-4-17.

//  Copyright (c) 2014 alan chen. All rights reserved.

//

 

#import "UIImage+Resize.h"

 

@implementation UIImage (Resize)

 

- (UIImage*)scaleToSize:(CGSize)size{

    UIGraphicsBeginImageContext(size);//建立bitmapcontext 並設置當前使用的context

    [self drawAsPatternInRect:CGRectMake(0, 0, size.width, size.height)];//在指定的區域繪製圖片

    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();//從當前context中獲取壓縮後的image

    UIGraphicsEndImageContext(); //將當前的context從堆棧中退出

    return scaledImage;

}

 

- (UIImage*)compressToCompressent:(float)compress{

    NSData *data;//判斷圖片是否是png格式的文件

    if(UIImagePNGRepresentation(self)){

        data = UIImagePNGRepresentation(self);//png格式是不可以壓縮的

    }else{

        data = UIImageJPEGRepresentation(self, compress);

    }

    return [UIImage imageWithData: data];

}

 

@end

 

這個Category中有兩個方法,分別用於壓縮圖片的大小和圖片的質量,對於壓縮圖片的大小咱們在項目中通常建議進行等比壓縮,保證圖片在視覺上不變形,壓縮圖片的大小可以快速的下降圖片的大小。通常大小壓縮比大約爲scale*scale,也就是長寬壓縮比之積。令外對於質量壓縮,不少資料建議壓縮比大於8.可是我在實際狀況中採用壓縮比大於8也沒有看到很是明顯的失真。咱們通常從1.0壓縮到0.5,圖片的大小將會壓縮到原來的1/8-1/9.可是在0.5壓縮到0.2的時候,圖片的大小隻會減小1/2左右。因此從0.5到0.2的壓縮效果不如1.0到0.5那麼明顯。那麼其實咱們在項目開發過程當中咱們通常將圖片壓縮到100k之內就能夠了。

相關文章
相關標籤/搜索