最近作圖片的上傳,因爲項目中的涉及到的圖片是從相冊和相機中拍照獲取的,因此圖片的類型不必定,有些是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);//建立bitmap的context 並設置當前使用的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之內就能夠了。