压缩图片的几种方法,我们都知道如果在上传的图片过大,上传会很慢,所以客户端这边需要做图片压缩。当然紧紧是对于加载图片的UIImagview 进行等比例压缩是不正确的,要从根本上改变图片的大小。
1 、NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
这个返回的是二进制的data值,可以通过打印知道大小确实减少了好多,通过此方法确实能优化性能,需要注意的是这个0.5,并不是说压缩到之前图片的二分之一
,应该是个系数之类的数值,这样的话图片压缩之后性能会好很多,但是不建议这个,因为解压缩的时候很耗费性能建议使用第二种方法
2、 使用CoreGraphics 重新绘制一张等比例的图片
小小的测试一下:
原图
经过下面代码压缩后:
- (UIImage *)imageWithImage:(UIImage*)image
scaledToSize:(CGSize)newSize;
{
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSString * path = [NSString stringWithFormat:@"%@/Documents/cutSome.jpg",NSHomeDirectory()];
NSData * imagedata = UIImageJPEGRepresentation(newImage, 1);
if( [imagedata writeToFile:path atomically:YES]){
NSLog(@"保存成功%@",path);
}
return newImage;
}
压缩后 :
如果只是单纯的使用第一种方法,图片确实会变小,分辨率也没有变化,但是在解压缩的过程中,会很耗性能,但是第二种方法 会按等比例的缩放像素,不会失真,对性能的耗损也比较小