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

网友投稿 2014 2022-09-07

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

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

前言

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

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);

质量压缩的比例

(质量压缩使用系统API​​UIImageJPEGRepresentation​​)

#define k_UIImageJPEGRepresentationcompressionQuality 0.5

比例压缩的代码

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,假如支持,则输出相应的图片格式!

在这里插入图片描述

​​img.alicdn.com/imgextra/i4…​​

IV 、 see also

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL基础教程2 —— 数据类型之日期和时间类型(MySQL基础教程(图灵出品) pdf下载)
下一篇:shell 脚本完成对日志文件的提取
相关文章

 发表评论

暂时没有评论,来抢沙发吧~