关于压缩图片的处理
2015-12-07 18:47
387 查看
//从文件中读取图片 UIImage *image = [UIImage imageWithContentsOfFile:@"/Users/owhat/Desktop/test/test/test.jpg"]; //将图片装换成data NSData *data = UIImageJPEGRepresentation(image, 0.8); //要创建一个新图片的保存路径 NSString *path = @"/Users/owhat/Desktop/test111.jpg"; //将新图片写成文件 [data writeToFile:path atomically:YES];
使用上述方法会有问题:
新图片的大小比原来的图片大小还要大。
后来我把压缩系统改成1.0,发现data的字节数大小就比原来的图片文件字节数大。
由此,我得出来一个结论:当把图片读入内存中德时候,大小就会变大,如果此时再把这块内存写入一个新文件 这个新文件大小肯定比原来的大。
但是我不知道为什么?
还有两个方法可以对图片进行压缩:
//压缩的大小~XX-------单位(K) - (NSData *)compressImage:(UIImage *)image toMaxFileSize:(NSInteger)maxFileSize { CGFloat compression = 0.9f; CGFloat maxCompression = 0.1f; NSData *imageData = UIImageJPEGRepresentation(image, compression); while ([imageData length] > maxFileSize*1024 && compression > maxCompression) { compression -= 0.1; imageData = UIImageJPEGRepresentation(image, compression); } return imageData; }
/** * 压缩的比例 * * @param image 传入要压缩的图片 * @param scaleSize 压缩的比例 0~1 * * @return 返回新图片 */ - (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize { UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize)); [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return scaledImage; }
相关文章推荐
- 《疯狂Android讲义》读书笔记2.Android应用的界面编程
- JS倒计时:从某个固定时间开始倒记
- ASP 一句话执行ASP代码
- 日经春秋 20151207
- 天声人語 20151207 「批判の自由」の大切さ
- 摄氏与华氏
- React Native学习-第一篇
- 优先队列 UVA 11997 K Smallest Sums
- ORACLE调用接口(OCI)简介及重要函数流程介绍
- NSRunLoop理解之理论
- Android 6.0 运行时权限处理
- 四种可变交流swap方法
- Unity3D之移植学习笔记:移植到Android平台
- HDOJ 5311 Hidden String(枚举)
- string,wstring互转
- java字符串截取
- superword开源项目中的定义相似规则
- YZR.Data 事务处理(Tranaction)
- artDialog学习文档
- MySQL字符集设置—MySQL数据库乱码问题 本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-01/31531.htm