Swift-图片压缩

一、

这种方式压缩后的图片,转 Data 的话会发现data的体积比之前的还大

/// 等比缩放图片 (注:压缩后的image转成data去使用的时候又把图片变大了)
    /// - Parameter scale: 缩放比例
    func scaleZoomImage(scale: CGFloat) -> UIImage?{
        let reSize = CGSize(width: self.size.width * scale, height: self.size.height * scale)
        return resetImgSize(size: reSize)
    }
    
    /// 重置图片大小 (注:压缩后的image转成data去使用的时候又把图片变大了)
    /// - Parameter size: 图片大小
    func resetImgSize(size: CGSize) -> UIImage?{
        UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale)
        self.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
        let resultImg = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return resultImg
    }

二、

当图片文件需要使用 Data 上传的时候,建议用这种

/// 直接使用data进行压缩
    /// - Parameter toKb: 指定data最大的体积
    /// - Returns: data
    func compressOriginalImage(_ toKb: Int = 10485760) -> Data?{
        var compression: CGFloat = 1
        let minCompression: CGFloat = 0.1
        var imageData = self.jpegData(compressionQuality: compression)
        if imageData!.count < toKb {
            return imageData
        }
        while imageData!.count > toKb, compression > minCompression {
            compression -= 0.1
            imageData = self.jpegData(compressionQuality: compression)
        }
        if imageData!.count > toKb {
            return nil
        }
        return imageData
    }
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容