CoreGraphics 压缩图片的正确姿势

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

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

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

小小的测试一下:

原图


原图.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;
    
    
}

压缩后 :

压缩后.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容