美文网首页
iOS 压缩图片成二进制流上传服务器、从服务器请求下来的二进制流

iOS 压缩图片成二进制流上传服务器、从服务器请求下来的二进制流

作者: 木子李55 | 来源:发表于2018-08-05 18:10 被阅读0次
 iOS中两种压缩图片的方法:(将UIImage转化为NSData,可用来上传服务器)
// UIImagePNGRepresentation(UIImage);
// UIImageJPEGRepresentation(UIImage,CGFloat);
 前者只有一个参数:图片的引用;后者有两个参数:图片的引用和压缩系数。
 前者更耗时,图片数据量更大,如果对图片的质量要求不那么高的话,可以通过设置压缩系数减少数据量,而且从视图角度看,图片的质量并没有明显降低,因此我们优先使用后者。

1)图片大于1M的,将压缩系数调整到0.7
2)图片在0.5M<image<1M,将压缩系数调整到0.8
3)图片小于0.5M,压缩系数可以写0.9或者1

    UIImage *uploadImage = [UIImage imageNamed:@"dog1.jpeg"];
    NSData *imageData = UIImageJPEGRepresentation(uploadImage, 0.7);
    NSLog(@"上传图片大小:%ldK", (long)(imageData.length/1024));

使用AFN上传图片(可以使用cocoapods导入AFNetworking这个第三方框架):

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:@"" parameters:@{} constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        // 上传图片,以文件流的格式,name是指服务器端的文件夹名字
        [formData appendPartWithFileData:imageData name:@"imageFile" fileName:fileName mimeType:@"image/jpeg"];
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        // uploadProgress代表进度
        NSLog(@"uploadProgress == %f", uploadProgress.fractionCompleted);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"上传成功");
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSLog(@"上传失败");
    }];

从服务器请求下来的二进制流图片数据,可转化为UIImage展示出来:

UIImageView *photoImage = [[UIImageView alloc] initWithFrame:CGRectMake(20, 100, 200, 300)];
    photoImage.backgroundColor = [UIColor yellowColor];
    photoImage.image = [UIImage imageWithData:imageData];
    [self.view addSubview:photoImage];

~~赠人玫瑰,手留余香;

~~日积跬步,久之千里。

相关文章

  • iOS 压缩图片成二进制流上传服务器、从服务器请求下来的二进制流

    1)图片大于1M的,将压缩系数调整到0.72)图片在0.5M

  • Glide 加载二进制图片不能及时更换的问题

    最近在项目中种遇到了一个比较奇葩的问题,需求要求上传图片要的是图片的二进制流,而不是常用的模式,上传到图片到服务器...

  • # 向服务器上传图片

    向服务器上传图片 准确的来说不止可以上传图片,流媒体都可以这么操作。思路与步骤:1 、流媒体文件转换成二进制数据流...

  • js axios文件上传

    上传文件(二进制流),与后台请求的方式,multipart/form-data,

  • HTTP2.0

    二进制分帧 将流的消息分贞编码,每个流有编号,每个贞有顺序编号。这样就可以实现多路复用。 首部压缩 通过在服务器和...

  • WEB下载文件的各种实现及错误处理

    通常我们使用AJAX向服务器请求数据,但是这些数据都是文本,而对于请求文件(二进制流),我们需要花点功夫进行处理。...

  • 阿里云(I)

    参考资料:iOS 阿里云服务器图片上传iOS录制(或选择)视频,压缩、上传(整理)视频 拍摄 与压缩 阿里云OSS...

  • 图片文件二进制流

    fopen():打开文件或URL 图片转换为二进制流形式图片转换为二进制流 二进制流转换为图片形式二进制转换为图片

  • HTTP/2协议之Stream【原理笔记】

    前言 前面三篇介绍了HPPT/2的“连接前言”、“二进制桢”、“头部压缩”。本文从“流及多路复用”、“流状态”、“...

  • Android面试题

    一、图片压缩处理图片的存在形式有三种:1、文件形式(以二进制形式存在于硬盘上)2、流的形式(以二进制形式存在于内存...

网友评论

      本文标题:iOS 压缩图片成二进制流上传服务器、从服务器请求下来的二进制流

      本文链接:https://www.haomeiwen.com/subject/gmnbvftx.html