具体实现返回NSData对象

图片质量压缩到某一范围内,如果后面用到多,可以抽成分类或者工具类,这里压缩递减比二分的运行时间长,二分可以限制下限。

- (NSData *)compressImage:(UIImage *)image toMaxFileSize:(NSUInteger)maxFileSize
{
    CGFloat min = 0;
    CGFloat max = 1;
    CGFloat mid = 0.5;
    NSData *imageData = UIImageJPEGRepresentation(image, mid);
    while (min < max) {
        mid = (max + min) / 2;
        imageData = UIImageJPEGRepresentation(image, mid);
        if (max < 0.05 || min > 0.95) { //避免造成死循环。
            break;
        }
        if ([imageData length] > maxFileSize) {
            max = mid;
        } else {
            if ([imageData length] >= 120 * 1024) {
                break;
            } else {
                min = mid;
            }
        }
    }
    return imageData;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,866评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 如今已经23岁了,可是真正的问自己,仍然分不清喜欢和爱的分界线到底在哪里,不懂什么才是喜欢,什么才是爱,真正的爱一...
    起个不深沉的名字阅读 297评论 0 0
  • 一串红:唇形科植物一串红,又称爆仗红、象牙红,为唇形科鼠尾草属植物。花序修长,色红鲜艳,花期又长,适应性强,为中国...
    舒心_1034阅读 404评论 0 0