美文网首页iOS记录iOS常用
iOS开发中图片质量的压缩

iOS开发中图片质量的压缩

作者: 梁森的简书 | 来源:发表于2020-11-04 17:03 被阅读0次

上传前获取图片的质量以及尺寸(先进行尺寸的压缩再进行质量的压缩)

1.获取图片的质量:
先将UIImage对象转成NSData对象,再通过NSData对象的length(单位是byte)获取。
(疑问:获取到的图片质量和原图片质量不一致)
2.获取图片的尺寸:
通过UIImage对象的size获取

图片质量不一致

使用UIImage imageNamed+ UIImageJPEGRepresentation(img, 1)得到的图片质量大于原图片质量
看一些资料说压缩参数compressionQuality取0.5比较接近原图片大小。

对图片的尺寸进行等比缩减

尺寸压缩之后质量必定压缩了

对图片的质量进行压缩

(疑问:压缩之后的图片使用UIImageWriteToSavedPhotosAlbum方法保存到相册之后变大了)

保存到相册的方法

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
        
        PHAssetChangeRequest * req = [PHAssetChangeRequest creationRequestForAssetFromImage:img];

        } completionHandler:^(BOOL success, NSError * _Nullable error) {
            if (success) {
                NSLog(@"😊保存图片成功");
            }
            if (error) {
                NSLog(@"保存图片失败:%@", error);
            }
        }];

对比了下,发现上面利用PHPhotoLibrary和UIImageWriteToSavedPhotosAlbum保存后图片的质量是一样的。


压缩图片质量的方法:

+ (UIImage *)compressImageQuality:(UIImage *)image toByte:(NSInteger)maxLength {
    CGFloat compression = 1;
    NSData *data = UIImageJPEGRepresentation(image, compression);
    if (data.length < maxLength) return image;
    CGFloat max = 1;
    CGFloat min = 0;
    for (int i = 0; i < 6; ++i) {
        compression = (max + min) / 2;
        data = UIImageJPEGRepresentation(image, compression);
        if (data.length < maxLength * 0.9) {
            min = compression;
        } else if (data.length > maxLength) {
            max = compression;
        } else {
            break;
        }
    }
    UIImage *resultImage = [UIImage imageWithData:data];
    return resultImage;
}

压缩图片尺寸的方法

//压缩图片尺寸
- (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
{
        UIGraphicsBeginImageContext(newSize);
        [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return newImage;
}

相关文章

  • iOS-图片解压缩相关

    SDWebimage中对图片的解压缩 谈谈 iOS 中图片的解压缩 iOS 开发:绘制像素到屏幕 探讨iOS 中图...

  • iOS开发中图片质量的压缩

    上传前获取图片的质量以及尺寸(先进行尺寸的压缩再进行质量的压缩) 1.获取图片的质量:先将UIImage对象转成N...

  • iOS 图片压缩限制大小最优解

    iOS 图片压缩限制大小最优解 图片的两种压缩方法 1.1 压缩图片质量 1.2 压缩图片尺寸 压缩图片使图片文件...

  • iOS开发中,PNG图片的各种压缩软件,以及压缩率对比

    iOS开发中,PNG图片的各种压缩软件,以及压缩率对比 https://my.oschina.net/shede3...

  • iOS 开发中的图片压缩

    在项目中经常遇到要上传图片,如果直接上传,那么会上传比较大的图片,导致费流量,刷新时加载图片时间过长,手机内存占用...

  • 探讨iOS 中图片的解压缩到渲染过程

    探讨iOS 中图片的解压缩到渲染过程 探讨iOS 中图片的解压缩到渲染过程

  • 图片压缩

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法、比例压缩法(根据路径获取图片并压缩)和比例压缩...

  • iOS 图片压缩方法

    两种图片压缩方法 两种图片压缩方法:压缩图片质量(Quality),压缩图片尺寸(Size)。 压缩图片质量 通过...

  • iOS 图片压缩限制大小

    一、两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size)。 压缩图片质量...

  • iOS 图片压缩方法

    两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size)。 压缩图片质量 N...

网友评论

    本文标题:iOS开发中图片质量的压缩

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