[置顶] 图片压缩到指定大小范围内KB、MB
2016-05-30 17:08
639 查看
- (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIImageView *imgView = [[UIImageViewalloc]initWithFrame:CGRectMake(10,30, 300,415)]; imgView.backgroundColor = [UIColoryellowColor]; imgView.image = [UIImageimageNamed:@"1.jpg"]; [self.viewaddSubview:imgView]; //图像压缩 UIImage *image = [selfscaleFromImage:imgView.image]; //保存图像 NSString *strFileName = [selfsaveImage:image]; imgView.image = image; NSLog(@"图片保存路径:%@",strFileName); } //========================== // 图像压缩 //========================== - (UIImage *)scaleFromImage:(UIImage *)image { if (!image) { returnnil; } NSData *data =UIImagePNGRepresentation(image); CGFloat dataSize = data.length/1024; CGFloat width = image.size.width; CGFloat height = image.size.height; CGSize size; if (dataSize<=50)//小于50k { return image; } elseif (dataSize<=100)//小于100k { size = CGSizeMake(width/1.f, height/1.f); } elseif (dataSize<=200)//小于200k { size = CGSizeMake(width/2.f, height/2.f); } elseif (dataSize<=500)//小于500k { size = CGSizeMake(width/2.f, height/2.f); } elseif (dataSize<=1000)//小于1M { size = CGSizeMake(width/2.f, height/2.f); } elseif (dataSize<=2000)//小于2M { size = CGSizeMake(width/2.f, height/2.f); } else//大于2M { size = CGSizeMake(width/2.f, height/2.f); } NSLog(@"%f,%f",size.width,size.height); UIGraphicsBeginImageContext(size); [image drawInRect:CGRectMake(0,0, size.width, size.height)]; UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); if (!newImage) { return image; } return newImage; } //=============== // 保存图像 //=============== - (NSString *)saveImage:(UIImage*)image { NSData *data; if (UIImagePNGRepresentation(image) ==nil) { data = UIImageJPEGRepresentation(image, 1.0); } else { data = UIImagePNGRepresentation(image); } //图片保存的路径 //这里将图片放在沙盒的documents文件夹中 NSString * DocumentsPath = [NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]; //文件管理器 NSFileManager *fileManager = [NSFileManagerdefaultManager]; //把刚刚图片转换的data对象拷贝至沙盒中并保存为image.png [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YESattributes:nilerror:nil]; [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"]contents:data attributes:nil]; //得到选择后沙盒中图片的完整路径 NSString *filePath = [[NSStringalloc]initWithFormat:@"%@%@",DocumentsPath, @"/image.png"]; return filePath; }
相关文章推荐
- ORM, ormlite和sqlite
- JQuery中的基本筛选选择器
- n的阶乘末尾含0的个数
- hdu1548 A strange lift(bfs)
- db2常用函数(1)
- 再谈json
- 第二冲刺阶段第一天
- powerdesigner导出sql
- 春哥来了
- POJ 3181 Dollar Dayz
- Leetcode 204. Count Primes
- Java 性能优化
- 强悍的 Linux —— 网络
- 简单Git服务器搭建
- OPatch Version: 11.2.0.3.13版本与OPatch Version: 11.2.0.3.10版本升级补丁区别
- 【BZOJ4145】[AMPPZ2014]The Prices【状压DP】【背包】
- Android的IPC机制(二)——AIDL实现原理简析
- 【Android Studio快捷键】之导入相应包声明(import packages)
- Android静默安装和静默卸载代码
- Qt之表单布局(QFormLayout)