详解IOS开发中图片上传时两种图片压缩方式的比较

 更新时间:2017年03月15日 09:24:07   投稿:lqh  
这篇文章主要介绍了IOS开发中图片上传时两种图片压缩方式的比较,需要的朋友可以参考下

IOS 图片上传时两种图片压缩方式的比较

上传图片不全面的想法:把图片保存到本地,然后把图片的路径上传到服务器,最后又由服务器把路径返回,这种方式不具有扩展性,如果用户换了手机,那么新手机的沙盒中就没有服务器返回的图片路径了,此时就无法获取之前已经上传了的头像了,在项目中明显的不可行。

上传图片的正确方式:上传头像到服务器一般是将图片NSData上传到服务器,服务器返回一个图片NSString地址,之后再将NSString的路径转为url并通过url请求去更新用户头像(用户头像此时更新的便是NSString)

代码为:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 // 设置请求格式
 manager.requestSerializer = [AFJSONRequestSerializer serializer];
 // 设置返回格式
 manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:[NSString stringWithFormat:@"%@%@", XLImageServerHost, functionName] parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
/////传的图片数据放这里
 NSData *eachImgData = UIImageJPEGRepresentation(image, 0.5);
 [formData appendPartWithFileData :eachImgData name : @"upload" fileName : @"picture.jpg" mimeType : @"image/jpeg" ];
 } success:^(AFHTTPRequestOperation *operation, id responseObject) {
 ///请求成功
 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
 ///请求失败
 }];

现在来介绍一下:UIImageJPEGRepresntation 和 UIImagePNGRepresontation的区别

在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. 

UIImageJPEGRepresntation:

UIImageJPEGRepresentation方法在耗时上比较少 而UIImagePNGRepresentation耗时操作时间比较长

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

使用UIImagePNGRepresentation取得照片时候可能会造成卡顿的现象

在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation.

UIImagePNGRepresontation:

UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.

譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数,大幅度降低图片数据量.

譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • iOS优化UITableViewCell高度计算的一些事儿

    iOS优化UITableViewCell高度计算的一些事儿

    这iOS开发中对于UITableViewCell高度自适应的文章已经很多很多,但都不是自己所需要的,下面篇文章主要给大家介绍了关于iOS优化UITableViewCell高度计算的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • iOS内存错误EXC_BAD_ACCESS的解决方法

    iOS内存错误EXC_BAD_ACCESS的解决方法

    iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里
    2013-06-06
  • 解决Xcode 8构建版本iTunes Connect获取不到应用程序状态的办法

    解决Xcode 8构建版本iTunes Connect获取不到应用程序状态的办法

    这篇文章主要介绍了关于解决Xcode 8构建版本iTunes Connect获取不到应用程序状态的办法,需要的朋友可以参考下
    2017-03-03
  • iOS应用开发中使UITextField实现placeholder属性的方法

    iOS应用开发中使UITextField实现placeholder属性的方法

    这篇文章主要介绍了iOS应用开发中使UITextField实现placeholder属性的方法,示例代码为传统的Objective-C语言,需要的朋友可以参考下
    2016-04-04
  • iOS实现图片自动切换效果

    iOS实现图片自动切换效果

    这篇文章主要为大家详细介绍了iOS实现图片自动切换效果,类似android画廊效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • iOS实现新年抽奖转盘效果的思路

    iOS实现新年抽奖转盘效果的思路

    这篇文章主要为大家详细介绍了iOS实现抽奖转盘效果的思路,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 如何在iphon IOS设备上使用二维码

    如何在iphon IOS设备上使用二维码

    深度解析iPhone ios设备上使用二维码是本文要介绍的内容,二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。不多说,我们直接来脚本之家学习内容详解,感兴趣的朋友一起来关注吧
    2015-08-08
  • iOS实现文字水平无间断滚动效果

    iOS实现文字水平无间断滚动效果

    这篇文章主要为大家详细介绍了iOS实现文字水平无间断滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • iOS微信支付开发案例

    iOS微信支付开发案例

    这篇文章主要为大家详细介绍了iOS微信支付开发案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • iOS中SQLite的操作方法

    iOS中SQLite的操作方法

    这篇文章主要为大家详细介绍了iOS中SQLite的操作方法,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论