IOS

关注公众号 jb51net

关闭
首页 > 软件编程 > IOS > IOS压缩图片模糊

IOS开发压缩后图片模糊问题解决

作者:公众号iOS逆向

这篇文章主要为大家介绍了IOS开发压缩后图片模糊问题解决实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

压缩原理:找出那些重复出现的字符串,然后用更短的符号代替,达到缩短字符串的目的。

比如,一篇文章大量使用"#公众号::iOS逆向"这个词语,我们用"iOS"代替,就缩短了6个字符,如果用"i"代替,就缩短了8个字符。

事实上,只要保证对应关系,可以用任意字符代替那些重复出现的字符串。

本质上,所谓"压缩"就是找出文件内容的概率分布,将那些出现概率高的部分代替成更短的形式。

所以,内容越是重复的文件,就可以压缩地越小。

比如,"ABABABABABABAB"可以压缩成"7AB"。

I 图片压缩的两种方式

          UIImageJPEGRepresentation(image, 0.0);//JPEG
     NSData * imageData = UIImagePNGRepresentation(image);
`
//推荐使用png 因为`PNG:0x89 image/png ,压缩比没有 JPG 高,但是无损压缩,解压缩性能高,苹果推荐的图像格式!
          [sourceImage drawInRect:CGRectMake(0,0,targetWidth, targetHeight)] ;

本文的压缩方案:质量压缩(0.5) 结合比例压缩(1028):

1、质量压缩的比例(质量压缩使用系统APIUIImageJPEGRepresentation) 2、比例压缩使用:drawInRect

II、 解决压缩之后图片模糊的问题

模糊的问题的大部分原因:使用第三方框架,(比如QMUIKit),在选择相册预览的时候,就把图片压缩了很模糊了。

应用场景:针对协议类型这种大图

2.1、如果是拍照,可以压缩一下分辨率,否则上传很慢

不用使用预览图进行上传

//    [self imgUpLoad:imageAsset.previewImage Max:1 Index:1];
    [self imgUpLoad:imageAsset.originImage Max:1 Index:1];

如果是拍照,可以压缩一下分辨率,否则上传很慢

    return  [self imageCompressForSize:image targetSize:size];

拍照压缩分辨率的例子

- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
    //当选择的类型是图片
    if ([type isEqualToString:@"public.image"])
    {
        UIImage *image1 = [info objectForKey:UIImagePickerControllerOriginalImage];
        image1 = [ControlManager image:image1 scaleToSize:CGSizeMake(1000, 1200)];// 压缩分辨率 便于上传
        [picker dismissViewControllerAnimated:YES completion:nil];
        [SVProgressHUD showWithStatus:@"上传中.." maskType:SVProgressHUDMaskTypeGradient];
        [self imgUpLoad:image1 Max:1 Index:1];
    }
}

2.2、 质量压缩(0.5) 结合比例压缩(1028)

用法

        NSData * imageData = UIImageJPEGRepresentation( [image compressWithTargetPixel:1028], k_UIImageJPEGRepresentationcompressionQuality);

质量压缩的比例

(质量压缩使用系统APIUIImageJPEGRepresentation

#define k_UIImageJPEGRepresentationcompressionQuality 0.5

比例压缩的代码

- (UIImage *)compressWithTargetPixel:(NSUInteger)targetPx {
}

III 针对业务场景选择图片格式

3.1 如何区分不同格式的图像的

 // NSData+ImageContentType.m    + (NSString *)sd_contentTypeForImageData:

 PNG:0x89 image/png ,压缩比没有 JPG 高,但是无损压缩,解压缩性能高,苹果推荐的图像格式!

 JPG:0xFF image/jpeg,压缩比最高的一种图片格式,有损压缩!最多使用的场景,照相机!解压缩的性能不好!

 GIF:0x47 image/gif ,序列桢动图,特点:只支持 256 种颜色!最流行的时候在 1998~1999,有专利的! 

3.2 使用场景分析

3.2.1 JPEG/JPG

3.2.2 PNG

3.2.3 SVG

3.2.4 Base64

3.2.5 WebP

“打开淘宝网,假如你是chrome浏览器,你会发现,所有图片都是webp结尾的,淘宝网图片运用了webp。假如你是safari浏览器,看到图片就是jpg或者png了,淘宝网自动判断浏览器支持不支持webp,假如支持,则输出相应的图片格式!

以上就是IOS开发压缩后图片模糊问题解决的详细内容,更多关于IOS压缩图片模糊的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文