您的位置:首页 > 移动开发 > Swift

swift如何压缩图片到指定大小以内,尺寸和体积双压缩

2016-11-18 16:33 971 查看
func 压缩(原图: UIImage)
-> NSData{

    

    //prepare constants

    let width = 原图.size.width

    let height = 原图.size.height

    let scale = width/height

    

    var sizeChange = CGSize()

    

    if width <= 400 { //图片宽度小于400时图片尺寸保持不变,不改变图片大小

        

        var 压缩图数据 = UIImageJPEGRepresentation(原图, 1)

        var 压缩图 = 原图

        

        while 压缩图数据?.length > 102400 {

            压缩图数据 = UIImageJPEGRepresentation(压缩图, 0.5)

            压缩图 = UIImage(data: 压缩图数据!)!

        }

        

        //print(压缩图数据?.length)

        return 压缩图数据!

        

    }else{

        

            let changedWidth:CGFloat = 400

            let changedheight:CGFloat =
changedWidth / scale

            sizeChange = CGSize(width: changedWidth, height: changedheight)

        

    }

    

    UIGraphicsBeginImageContext(sizeChange)

    

    //draw resized image on Context

    原图.drawInRect(CGRectMake(0, 0,
sizeChange.width, sizeChange.height))

    

    //create UIImage

    let resizedImg = UIGraphicsGetImageFromCurrentImageContext()

    

    UIGraphicsEndImageContext()

    

    var 压缩图数据 = UIImageJPEGRepresentation(resizedImg, 1)

    var 压缩图 = 原图

    

    while 压缩图数据?.length > 102400 {

        压缩图数据 = UIImageJPEGRepresentation(压缩图, 0.5)

        压缩图 = UIImage(data: 压缩图数据!)!

    }

    //print(压缩图数据?.length)

    return 压缩图数据!

    

    

}

不懂的找我,具体不解释那么多了,我是整容通(hgzrt.com)产品经理,从小白开始自学撸码,在整容通app里面我的id是通通。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: