需求
很多时候我们上传图片经常遇到一些问题,要不就是图片质量变差,要不就是图片太大等等问题。这里,我找到了一个算是目前比较符合需求的解决方案。在原有基础上增加了动态压缩系数,改写成Swift版本,最底下贴出OC版本。
实现思路
先调整分辨率,分辨率可以自己设定一个值,大于的就缩小到这分辨率,小余的就保持原本分辨率。然后再根据图片最终大小来设置压缩比,比如传入maxSize = 30KB,最终计算大概这个大小的压缩比。基本上最终出来的图片数据根据当前分辨率能保持差不多的大小同时不至于太模糊,跟微信,微博最终效果应该是差不多的,代码仍然有待优化!
实现代码
OC 版本(推荐)
基于网友的要求,我把 OC 版本的代码也贴出来。
|
|
Swift3.0版本二分法压缩模式(推荐)
|
|
Swift3.0之前旧版本压缩模式(建议不用,性能太差)
|
|
【更新日志】
2017年10月09日:修复了网友提出的二分法存在index为0时闪退问题。
2018年05月25日:将原本默认设置图片尺寸为1024*1024改成等比放大,同时降低分辨力也改成等比降低。
再一次感谢您花费时间阅读这篇文章!
微博: @Danny_吕昌辉
博客: SuperDanny