CoreGraphics 压缩图片的正确姿势

压缩图片的几种方法,我们都知道如果在上传的图片过大,上传会很慢,所以客户端这边需要做图片压缩。当然紧紧是对于加载图片的UIImagview 进行等比例压缩是不正确的,要从根本上改变图片的大小。

1 、NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
这个返回的是二进制的data值,可以通过打印知道大小确实减少了好多,通过此方法确实能优化性能,需要注意的是这个0.5,并不是说压缩到之前图片的二分之一
,应该是个系数之类的数值,这样的话图片压缩之后性能会好很多,但是不建议这个,因为解压缩的时候很耗费性能建议使用第二种方法

2、 使用CoreGraphics 重新绘制一张等比例的图片

小小的测试一下:

原图


CoreGraphics 压缩图片的正确姿势_第1张图片
原图.png

经过下面代码压缩后:

- (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;
    
    
}

压缩后 :

CoreGraphics 压缩图片的正确姿势_第2张图片
压缩后.png

如果只是单纯的使用第一种方法,图片确实会变小,分辨率也没有变化,但是在解压缩的过程中,会很耗性能,但是第二种方法 会按等比例的缩放像素,不会失真,对性能的耗损也比较小

你可能感兴趣的:(CoreGraphics 压缩图片的正确姿势)