IOS图片压缩上传服务器终极解决方案

原创 2015年07月10日 09:11:20

我最终才去的方案如下:

/**
 *  压缩图片到指定大小并且返回图片数据
 *
 *  @param maxFileSize 指定大小
 *
 *  @return 图片数据
 */
- (NSData *)compressionImageToDataWithMaxFileSize:(NSInteger)maxFileSize;
- (NSData *)compressionImageToDataTargetWH:(CGFloat)targetWH maxFileSize:(NSInteger)maxFileSize;



先调整分辨率,分辨率可以自己设定一个值,大于的就缩小到这分辨率,小余的就保持原本分辨率。然后在判断图片数据大小,传入范围maxSize = 100 ,大于的再压缩,小的就保持原样

- (NSData *)compressionImageToDataTargetWH:(CGFloat)targetWH maxFileSize:(NSInteger)maxFileSize
{
    if (targetWH <= 0) {
        targetWH = 1024;
    }
    
    //缩
    CGSize newSize = CGSizeMake(self.size.width, self.size.height);
    CGFloat tempHeight = newSize.height / targetWH;
    CGFloat tempWidth = newSize.width / targetWH;
    if (tempWidth > 1.0 && tempWidth > tempHeight) {
        newSize = CGSizeMake(self.size.width / tempWidth, self.size.height / tempWidth);
    }
    else if (tempHeight > 1.0 && tempWidth < tempHeight){
        newSize = CGSizeMake(self.size.width / tempHeight, self.size.height / tempHeight);
    }
    UIGraphicsBeginImageContext(newSize);
    [self drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    //压
    CGFloat compression = 0.9f;
    CGFloat maxCompression = 0.1f;
    NSData *imageData = UIImageJPEGRepresentation(newImage, compression);
    while (imageData.length / 1000 > maxFileSize && compression > maxCompression) {
        compression -= 0.1;
        imageData = UIImageJPEGRepresentation(newImage, compression);
    }
    
    return imageData;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

IOS 图片上传处理 图片压缩 图片处理

提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用。在这里,我们需要过UIImagePickerController类来和用户交互。 使用UIImagePickerCo...
  • yidu_blog
  • yidu_blog
  • 2016年03月09日 18:59
  • 3902

ios图片上传服务器前的压缩处理

  • 2016年02月17日 10:20
  • 722KB
  • 下载

ios 调用相机 上传图片到服务器 图片角度问题

- (IBAction)selectPhoto:(id)sender { UIActionSheet *sheet; if([UIImagePickerController isSour...
  • wanglj7525
  • wanglj7525
  • 2015年12月09日 17:06
  • 2008

iOS开发上传图片的压缩

最近做论坛功能,发帖的时候需要用到从相册中选取图片然后上传,由于每次上传图片的最大数量为9张,所以需要对图片进行压缩。开始时用了以前经常用的压缩的方法: [objc] view ...
  • iOSbird
  • iOSbird
  • 2016年03月31日 18:48
  • 881

iOS 图片压缩

最近做论坛功能,发帖的时候需要用到图片上传的gong
  • Apple_app
  • Apple_app
  • 2014年08月26日 14:51
  • 22867

iOS 对图片进行压缩处理

iOS 对图片进行压缩处理 在开发中,我们通常需要进行图片上传等操作,例如:上传头像等,图像本身显示的就是很小一张图片,而我们直接拍照,或者相册选取的图片通常都比较大,这时候,我们就需要对图片做相应的...
  • ljh910329
  • ljh910329
  • 2015年05月24日 14:21
  • 1101

iOS 将相册中的图片上传至服务器

在使用app时,从相册中选取图片作为头像是很常用的操作,首先打开相册选择图片,然后将图片保存至本应用的document,最后将document中图片的路径保存至NSUserDefaults和服务器。 ...
  • worldzhy
  • worldzhy
  • 2014年11月28日 10:42
  • 49915

iOS 手机照片上传服务器方向不对的原因以及解决方法

苹果手机上传图片到服务器,发现图片方向不对,百度原因发现: 1:原因:  相机拍照后直接取出来的UIimage(用UIImagePickerControllerOriginalImage取出),它本身...
  • hailideboke
  • hailideboke
  • 2017年08月25日 17:09
  • 237

iOS上传照片:图片尺寸压缩,上传时大小压缩,QBImagePickerController多选照片出现的问题

1,图片尺寸压缩 -(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidt...
  • lichuanliangios
  • lichuanliangios
  • 2016年05月24日 11:05
  • 1672

将图片打包成文件上传服务器 POST请求 AFNetWorking网络请求

将图片打包成文件上传服务器 POST请求 AFNetWorking网络请求
  • yiral
  • yiral
  • 2016年06月22日 18:08
  • 398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS图片压缩上传服务器终极解决方案
举报原因:
原因补充:

(最多只允许输入30个字)