我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

  • 特点:有损压缩、体积小、不支持透明
  • 使用场景:颜色丰富的照片,JPG是通用的选择,如大的背景图、轮播图或Banner图。

3.2.2 PNG

  • 特点:无损压缩、质量高、体积大、支持透明。
  • 使用场景:透明图片的业务场景,如小的Logo、颜色简单且对比强烈的图片或背景。

3.2.3 SVG

  • 特点:文本文件、体积小、不失真、兼容性好、无需多端、多分辨率适配、较强的交互特性、渲染成本比较高。
  • 使用场景:图片色彩相对简单的业务场景。

3.2.4 Base64

  • 特点:文本文件、依赖编码,Base64编码后,图片大小会膨胀为原文件的4/3。
  • 使用场景:小图标(<8KB)解决方案。

3.2.5 WebP

  • 特点:WebP图片是一种新的图像格式,由Google开发。与png、jpg相比,相同的视觉体验下,WebP图像的尺寸缩小了大约30%。另外,WebP图像格式还支持有损压缩、无损压缩、透明和动画,但有兼容性问题。
  • 使用场景:图片占较大的商场类网站,目前Google、Facebook、ebay、淘宝、腾讯、美团等已经在用。

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ps图片缩小后图像模糊不清晰怎么解决

本篇内容介绍了“ps图片缩小后图像模糊不清晰怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ps图片缩小后图像模糊不清晰解决方法:1、
2023-07-02

PHP绘图后图像模糊问题的解决探究

标题:PHP绘图后图像模糊问题的解决探究在Web开发中,PHP是一种常用的后端编程语言,经常用于生成动态内容,包括动态图像。然而,有时在使用PHP绘图工具生成图像时,可能会出现图像模糊的问题,给用户体验带来影响。本文将探究PHP绘图后图像
PHP绘图后图像模糊问题的解决探究
2024-02-28

uni-app开发微信小程序之H5压缩上传图片的问题怎么解决

这篇文章主要讲解了“uni-app开发微信小程序之H5压缩上传图片的问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“uni-app开发微信小程序之H5压缩上传图片的问题怎么解决”吧
2023-07-05

Dedecms图集上传zip压缩包解压图片顺序不对问题的解决方法

其实这并不是DEDEcms解压出错,而是因为DEDECwww.cppcns.comMS排列图标顺序是按解压时间的前后来排列的,知道了原因,我们只要改变DEDECMSwww.cppcns.com默认的排列规则就可以解决这个问题了。大家可以看到
2022-06-12

如何解决解决jupyter notebook图片显示模糊和保存清晰图片的问题

这篇文章主要介绍如何解决解决jupyter notebook图片显示模糊和保存清晰图片的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!jupyter notebook 图片显示模糊的解决办法加入这几行代码即可:矢
2023-06-14

uni-app开发微信小程序之H5压缩上传图片的问题详解

这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,下面这篇文章主要给大家介绍了关于uni-app开发微信小程序之H5压缩上传图片的问题,需要的朋友可以参考下
2023-03-02

微信小程序开发指南之图片压缩解决方案

在项目开发过程中遇到一个需要从小程序上传图片的需求,此需求实现起来并不难,下面这篇文章主要给大家介绍了关于微信小程序开发指南之图片压缩解决方案的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

如何解决手机网页web app图片非常模糊的问题

这篇文章主要介绍“如何解决手机网页web app图片非常模糊的问题”,在日常操作中,相信很多人在如何解决手机网页web app图片非常模糊的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决手机网页w
2023-06-08

解决MongoDB技术开发中遇到的数据压缩问题的方法研究

解决MongoDB技术开发中遇到的数据压缩问题的方法研究摘要:随着数据量的不断增长和应用场景的不断扩大,数据存储和传输的效率变得愈发重要。尤其对于MongoDB等非关系型数据库,如何有效地进行数据压缩以减少存储和传输的成本成为了一项具有挑战
2023-10-22

Android开发中调用系统相册上传图片到服务器OPPO等部分手机上出现短暂的显示桌面问题的解决方法

要原因是主体样式设置的问题:这里把appTheme设置一个style即可: @color/white