最近作图片的上传,因为项目中的涉及到的图片是从相册和相机中拍照获取的,因此图片的类型不必定,有些是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之内就能够了。