swift 图片压缩

本文介绍在Swift中如何优化图片上传过程,通过调整压缩质量和重新绘制图片来显著减少图片大小,适用于手机端显示,如头像等场景。文章提供具体代码实现,帮助开发者提升应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     当我们项目中有关于图片的功能时,就免不了需要用到图片上传。

     但是,我们要认识到,你要上传的图片大小,是否是必须的。当我们确定要上传的图片,只是用在手机端显示,并不是必须使用原图,这时,我们要在上传前,进行图片的压缩。

     swift提供了较简单的压缩方法:

     

var imageData: Data = image.jpegData(compressionQuality: 0.3) ?? Data()

      但是,这个方法有个问题,当压缩比例太小时,就会固定在某个极限值,我个人粗略估算,大约是0.02

       因此,当图片足够大,而我们只是用来当类似头像来使用时,上述方法就那以满足了。在此,我提供一个另外的方法:将图片重新绘制,以大量减小图片大小   

    /**
     *  等比率缩放
     */
    func scaleImage(scaleSize:CGFloat)->UIImage {
        let reSize = CGSize(width:self.size.width * scaleSize, height:self.size.height * scaleSize)
        return reSizeImage(reSize: reSize)
    }
    /**
     *  重设图片大小
     */
    func reSizeImage(reSize:CGSize)->UIImage {
        UIGraphicsBeginImageContextWithOptions(reSize,false,UIScreen.main.scale);
        self.draw(in: CGRect(x:0, y:0, width:reSize.width, height:reSize.height));
        let reSizeImage:UIImage = UIGraphicsGetImageFromCurrentImageContext() ?? UIImage();
        UIGraphicsEndImageContext();
        return reSizeImage;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值