ios图片的压缩
最近做图片的上传,由于项目中的涉及到的图片是从相册和相机中拍照获取的,所以图片的类型不一定,有些是jpg有些是png,另外随着现在设备相继的像素越来越高,所拍摄的图片也越来越到,在图片上传之前我们是需要进行一定的处理的。最常见的是1.缩小图片的尺寸。2:降低图片的质量。针对以上两种方法,我编写了一个UIImage的Category.代码如下:
//
// UIImage+Resize.h
// hjclass
//
// Created by alan chen on 14-4-17.
// Copyright (c) 2014年 alan chen. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface UIImage (Resize)
- (UIImage*)scaleToSize:(CGSize)size;
- (UIImage*)compressToCompressent:(float)compress;
@end
//
// UIImage+Resize.m
// hjclass
//
// Created by alan chen on 14-4-17.
// Copyright (c) 2014年 alan chen. All rights reserved.
//
#import "UIImage+Resize.h"
@implementation UIImage (Resize)
- (UIImage*)scaleToSize:(CGSize)size{
UIGraphicsBeginImageContext(size);//创建bitmap的context 并设置当前使用的context
[self drawAsPatternInRect:CGRectMake(0, 0, size.width, size.height)];//在指定的区域绘制图片
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();//从当前context中获取压缩后的image
UIGraphicsEndImageContext(); //将当前的context从堆栈中退出
return scaledImage;
}
- (UIImage*)compressToCompressent:(float)compress{
NSData *data;//判断图片是不是png格式的文件
if(UIImagePNGRepresentation(self)){
data = UIImagePNGRepresentation(self);//png格式是不能够压缩的
}else{
data = UIImageJPEGRepresentation(self, compress);
}
return [UIImage imageWithData: data];
}
@end
这个Category中有两个方法,分别用于压缩图片的大小和图片的质量,对于压缩图片的大小我们在项目中一般建议进行等比压缩,保证图片在视觉上不变形,压缩图片的大小能够快速的降低图片的大小。一般大小压缩比大约为scale*scale,也就是长宽压缩比之积。令外对于质量压缩,很多资料建议压缩比大于8.但是我在实际情况中采用压缩比大于8也没有看到非常明显的失真。我们一般从1.0压缩到0.5,图片的大小将会压缩到原来的1/8-1/9.但是在0.5压缩到0.2的时候,图片的大小只会减少1/2左右。所以从0.5到0.2的压缩效果不如1.0到0.5那么明显。那么其实我们在项目开发过程中我们一般将图片压缩到100k以内就可以了。
ios图片的压缩的更多相关文章
- iOS 图片大小压缩 图片尺寸处理
图片的压缩其实是俩概念,1.是 “压” 文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降,2.是 “缩” 文件的尺寸变小,也就是像素数减少.长宽尺寸变小,文件体积同样会减小. 这个 UII ...
- jquery mobile上传图片完整例子(包含ios图片横向问题处理和C#后台图片压缩)
上传图片本身是个基本的小功能,但是到了移动端就不那么简单了,相信找到这篇文章的你一定有深深的同感. 本文实例是:在(移动端)页面中点击图片,然后选择文件,然后保存.使用Asp.net 难点一:后台获取 ...
- UIImage 和 iOS 图片压缩UIImage / UIImageVIew
UIImageView 制作气泡 stretchableImageWithLeftCapWidth http://blog.csdn.net/justinjing0612/article/detail ...
- ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结
相册 iphone的相册包含摄像头胶卷+用户计算机同步的部分照片.用户可以通过UIImagePickerController类提供的交互对话框来从相册中选择图像.但是,注意:相册中的图片机器路径无法直 ...
- ios里面如何压缩图片
在iOS里面,压缩图片跟在其他环境里面差不多,都和累死, 就是对当前图片从新画图,制定一个尺寸的问题 UIImage* image = [UIImage imageNamed:@"cat.j ...
- iOS 图片压缩方法
iOS 图片压缩方法 两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size). 压缩图片质量 NSData *data = UIImageJPEGReprese ...
- js 前端图片压缩+ios图片角度旋转
step1:读取选择的图片,并转为base64: function ImgToBase64 (e, fn) { // 图片方向角 //fn为传入的方法函数,在图片操作完成之后执行 var Orient ...
- iOS 使用AFN 进行单图和多图上传 摄像头/相册获取图片,压缩图片
图片上传时必要将图片进行压缩,不然会上传失败 首先是同系统相册选择图片和视频.iOS系统自带有UIImagePickerController,可以选择或拍摄图片视频,但是最大的问题是只支持单选,由于项 ...
- iOS图片压缩处理
理解概念 首先,我们必须明确图片的压缩其实是两个概念: “压” 是指文件体积变小,但是像素数不变,长宽尺寸不变,那么质量可能下降. “缩” 是指文件的尺寸变小,也就是像素数减少,而长宽尺寸变小,文件体 ...
随机推荐
- Swift中的Optional类型 (可选类型)与强制解包 ? !
我们在swift的开发中会经常遇见?和! ,理解这两个符号深层次的内容对我们的开发是相当有利的: 目前网上对swift3.0的教程还相当的少,如果去搜索会发现早期的说法,在定义变量的时候,swift是 ...
- cocos2d-js 3.0rc0加载游戏引擎时长时间黑屏
如果是原始引擎的话是会比较大一些,但是最终发布的时候我们都建议你打包成release版,这个可以使用cocos命令 cocos compile -p web 来完成轻松打包,会在你的项目目录下创建一个 ...
- 理解angularjs的作用域
<!doctype html> <html ng-app="myApp"> <head> <script src="http:/ ...
- exports 和 module.exports 的区别
https://cnodejs.org/topic/5231a630101e574521e45ef8 //一句话总结:exports是对module.exports的引用,require()返回的是 ...
- CSS声明顺序
CSS对元素样式进行声明,虽然一条规则中的声明可以按照任何顺序写出来,但是还是应该有个优先级的顺序. 如下的声明顺序摘抄自<CSS设计指南>,优先级顺序如下: display及相关声明 p ...
- js的打印分页
调用 浏览器 自带的 打印功能 时,在需要分页的地方插入如下HTML,便可实现打印分页: <div style="page-break-before:always;"> ...
- 8.springMVC中的RESTful架构风格
RESTful架构:是一种设计的风格,并不是标准,只是提供了一组设计原则和约束条件,也是目前比较流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. 关于 ...
- 数据库数据怎样导出成Excle表格或Word文档?
数据导出:将数据库的数据导出成Excel工作表或Word文档 方法:将一个泛型集合导出出去 主要使用: SaveFileDialog StreamWriter 导出代码: private void b ...
- display 显示隐藏 ESAYuI
$("#rejectCauseDisplay").css('display',"block"); $("#rejectCauseDisplay ...
- 小甲鱼python视频第七讲(课后习题)
1.assert的作用. assert用来判断语句的真假,如果为假的话将触发AssertionError错误. 如果为真则继续执行. 2.变量互换(注意顺序) 3.成员资格运算符(in) 4.分数的划 ...