IOS图片压缩上传服务器终极解决方案
来源:互联网 发布:好玩的贴吧有哪些 知乎 编辑:程序博客网 时间:2024/05/02 02:47
我最终才去的方案如下:
/** * 压缩图片到指定大小并且返回图片数据 * * @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;}
0 0
- IOS图片压缩上传服务器终极解决方案
- Android 图片压缩终极解决方案
- android图片压缩终极解决方案
- android图片压缩终极解决方案
- android图片压缩终极解决方案
- Android图片压缩终极解决方案,是的,终极,终极,终极
- Android图片压缩终极解决方案,是的,终极,终极,终极
- Android图片压缩终极解决方案,是的,终极,终极,终极
- iOS -- 摄像头/相册获取图片,压缩图片,上传服务器
- 图片压缩 ios 上传
- H5 图片压缩上传解决方案
- iOS 图片上传之压缩
- iOS 上传图片(未压缩)
- iOS 视频图片压缩上传
- iOS 上传图片压缩处理
- IOS学习之ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
- Android 图片压缩终极解决方案,仅需一行代码。
- 手机端图片压缩上传解决方案
- Qt4--FormLayout
- Base64转码
- 理解Android中的 密度
- Errors occurred during the build
- 年轻程序员需要学习的5大经验
- IOS图片压缩上传服务器终极解决方案
- 用户名失去焦点ajax请求后台,页面以下拉列表的形式展示相应的数据
- Java tutorial 4
- vsftpd创建匿名Linux FTP服务器
- IOS下获取时间、手机系统时区以及获取时间间隔
- 使用UIButton
- Jni中C++和Java的参数传递
- Codeforces Round #310 (Div. 1) A B C D题
- 百度地图开发------基础地图篇------缩放空间和比例尺控件移动位置无效问题