美文网首页
iOS图片压缩成指定大小

iOS图片压缩成指定大小

作者: 白纸和笔 | 来源:发表于2017-08-30 17:22 被阅读0次

在iOS中涉及一些图片显示和处理问题,在实际中碰到过修改账户头像时上传头像出现 error = Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: not found (404)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x618000036220> 问题, 但实际修改头像的接口和参数都是没有问题的,后来发现是因为上传的图片太大了,将图片转成NSDataBase64Encoding64CharacterLineLength格式,生成的字符流有七八页文档,打印输出字节长度有60~100+不等,也因服务器有限制,无法上传过大的,所以需要将图片进行压缩到指定大小,压缩方式可为

UIImageJPEGRepresentation(UIImage * __nonnull image, CGFloat compressionQuality);

具体如下:

-(NSString *)UIImageToBase64Str:(UIImage *) image maxDataLength:(CGFloat) len
{
    CGFloat quality = 0.5;
    NSData *data = UIImageJPEGRepresentation(image, quality);
    while ((data.length/1024) > len && quality > 0.01f) {
        quality = quality - 0.05;
        data = UIImageJPEGRepresentation(image, quality);
    }
    NSString *encodedImageStr = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return encodedImageStr;
}

0.05为每次再压缩时图片质量减少的值,在实际中可根据需要进行相应更改。
返回的encodedImageStr为字符流,可用于直接上传到服务器的。
计算图片压缩后的大小:

dataLength = data.length/1024;

相关文章

网友评论

      本文标题:iOS图片压缩成指定大小

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