AFNetworking上传一张或多张图片,并压缩图片节约占用内存
2016-08-10 16:08
344 查看
最近在做APP的时候,遇到了难题:根据公司需求,在用户评论并上传图片的时候,有的手机像素比较高拍的照片高清的,但是每张图片占用的内存太大,或者上传照片的时候,相册的部分照片本身就占很大内存空间,后台数据库内存量有限,如果后期用户达到了几百万,每个用户都评论并上传这么高像素大内存的图片上去,后台数据库怕承受不了,继续拓展后台存储量的话,需要很大成本,那么怎么在前台来处理这些上传的图片而又不失大体呢?
这次总结得是用AFNetworking 向后台传输一张或多张图片,并且将照片压缩,感觉还是AFNetworking好使,相比原生的NSSURLsession的传输方法,话不多说,开始分享,用的话,代码基本不用改,直接用~(上传头像的时候,点击保存~触发这个)
上传一张图片:
View Code
上传多张图片:
这次总结得是用AFNetworking 向后台传输一张或多张图片,并且将照片压缩,感觉还是AFNetworking好使,相比原生的NSSURLsession的传输方法,话不多说,开始分享,用的话,代码基本不用改,直接用~(上传头像的时候,点击保存~触发这个)
上传一张图片:
UIImage *image = [UIImage imageNamed:@"3"]; NSMutableDictionary *photo = [NSMutableDictionary dictionary]; [photo setObject:@"123" forKey:@"phoneNumber"]; [photo setObject:@"123" forKey:@"psw"]; NSLog(@"1111%@",photo); AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer.timeoutInterval = 20; manager.responseSerializer.acceptableContentTypes = [NSSet setWithArray:@[@"text/plain",@"multipart/form-data"]]; [manager POST:@"http://192.168.0.105:8080/miracle/Upload.action" parameters:photo constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { NSDate *date = [NSDate date]; NSDateFormatter *formormat = [[NSDateFormatter alloc]init]; [formormat setDateFormat:@"HHmmss"]; NSString *dateString = [formormat stringFromDate:date]; NSString *fileName = [NSString stringWithFormat:@"%@.png",dateString]; NSData *imageData = UIImageJPEGRepresentation(image, 1); double scaleNum = (double)300*1024/imageData.length; NSLog(@"图片压缩率:%f",scaleNum); if(scaleNum <1){ imageData = UIImageJPEGRepresentation(image, scaleNum); }else{ imageData = UIImageJPEGRepresentation(image, 0.1); } [formData appendPartWithFileData:imageData name:@"files" fileName:fileName mimeType:@"image/jpg/png/jpeg"]; } progress:^(NSProgress * _Nonnull uploadProgress) { NSLog(@"---%@",uploadProgress); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"`````````%@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];
View Code
上传多张图片:
NSArray * _imageArr = @[@"1",@"2",@"3"]; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer.timeoutInterval = 20; manager.responseSerializer.acceptableContentTypes = [NSSet setWithArray:@[@"text/plain",@"multipart/form-data"]]; [manager POST:@"http://192.168.0.105:8080/miracle/Upload.action" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { for (int i=0; i<_imageArr.count; i++) { UIImage * image =[UIImage imageNamed:_imageArr[i]]; NSDate *date = [NSDate date]; NSDateFormatter *formormat = [[NSDateFormatter alloc]init]; [formormat setDateFormat:@"HHmmss"]; NSString *dateString = [formormat stringFromDate:date]; NSString *fileName = [NSString stringWithFormat:@"%@.png",dateString]; NSData *imageData = UIImageJPEGRepresentation(image, 1); double scaleNum = (double)300*1024/imageData.length; NSLog(@"图片压缩率:%f",scaleNum); 23 if(scaleNum <1){ imageData = UIImageJPEGRepresentation(image, scaleNum); }else{ imageData = UIImageJPEGRepresentation(image, 0.1); } [formData appendPartWithFileData:imageData name:@"files" fileName:fileName mimeType:@"image/jpg/png/jpeg"]; } } progress:^(NSProgress * _Nonnull uploadProgress) { 38 NSLog(@"---%@",uploadProgress); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSLog(@"`````````%@",responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];
相关文章推荐
- 【学习笔记】少占用内存获取压缩图片
- android实现一张或多张图片压缩并保持清晰上传
- 使用BitmapFactory.Options进行图片的尺寸压缩实现节约内存
- Android 一张图片(BitMap)占用内存的计算 图片内存优化
- Android 一张图片(BitMap)占用内存的计算 图片内存优化
- 图片占用内存和设置图片的模式(即每个设置每个像素占几个字节)还有压缩图片(小集合)
- 图片的占用内存压缩处理和传送流量压缩处理
- 相机选择照片及拍照后使用AFNetworking图片上传(支持一张及多张上传)
- Android高效内存1:一张图片占用多少内存
- AFNetworking上传到服务器一张或者多张图片,及上传视频详解
- Android 一张图片(BitMap)占用内存的计算 图片内存优化
- 计算程序中一张图片所占用的内存
- MUI - 图片压缩上传demo,可以选择一张或多张图片也可以拍摄照片
- Android中一张图片加载后所占用内存大小的获取与测试
- 安卓:一张图片资源要占用多大内存
- android 图片占用内存与什么有关
- 表单中上传文件、压缩上传图片
- android_java中图片占用内存大小问题
- Java图片上传压缩处理
- KindEditor编辑器——在上传图片中选一张为焦点图片