博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图片压缩
阅读量:6477 次
发布时间:2019-06-23

本文共 1393 字,大约阅读时间需要 4 分钟。

在做发送图片的时候发现,iOS发送给安卓的base64文件时,安卓解压读取会崩溃,原因说是由于图片过大.下面是一种压缩图片又避免失真特严重的方法

//压缩图片

extension UIImage {

    func resizeImage(image: UIImage, newSize: CGSize) -> UIImage {

        UIGraphicsBeginImageContextWithOptions(newSize, false, UIScreen.main.scale)

        image.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))

        

        var newImage = UIGraphicsGetImageFromCurrentImageContext()

        UIGraphicsEndImageContext()

        

        let data:NSData = UIImageJPEGRepresentation(newImage!, 1)! as NSData

        print(data.length / 1000)

        if data.length / 1000 > 150 {

            let size = CGSize.init(width: (newImage?.size.width)! / 5, height: (newImage?.size.height)! / 5)

            UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale)

            image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))

            

            newImage = UIGraphicsGetImageFromCurrentImageContext()

            UIGraphicsEndImageContext()

        }

 

        let dataNew:NSData = UIImageJPEGRepresentation(newImage!, 1)! as NSData

        print(dataNew.length / 1000)

        if dataNew.length / 1000 > 150 {

            let size = CGSize.init(width: (newImage?.size.width)! / 5, height: (newImage?.size.height)! / 5)

            UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.main.scale)

            image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))

            

            newImage = UIGraphicsGetImageFromCurrentImageContext()

            UIGraphicsEndImageContext()

        }

        

        

        return newImage!

    }

}

转载于:https://my.oschina.net/wayzhu/blog/1456817

你可能感兴趣的文章
ios开发中使用正则表达式识别处理字符串中的URL
查看>>
项目中的积累,及常见小问题
查看>>
Python类型转换、数值操作(收藏)
查看>>
oracle11g dataguard 安装手册(转)
查看>>
java并发包分析之———Deque和LinkedBlockingDeque
查看>>
1. Two Sum - Easy - Leetcode解题报告
查看>>
多线程---同步函数的锁是this(转载)
查看>>
鱼C记事本V1.0(下)- 零基础入门学习Delphi28
查看>>
百练 2742 统计字符数 解题报告
查看>>
Ubuntu搜狗输入法候选词乱码
查看>>
js中回调函数写法
查看>>
React native android 最常见的10个问题
查看>>
数据结构和算法
查看>>
.Net 项目代码风格要求
查看>>
[pat]1045 Favorite Color Stripe
查看>>
Immutable学习及 React 中的实践
查看>>
【转】性能测试步骤
查看>>
OSI与TCP/IP各层的结构与功能,都有哪些协议
查看>>
Android实例-程序切换到后台及从后台切换到前台
查看>>
spring boot启动定时任务
查看>>