iOS 客户端图片 webp 压缩

2017-07-07 10:41:17 +08:00
 jialiangnull

代码:

NSLog(@"end1___%@",[NSDate new]);

NSData *imageData = UIImageWebPRepresentation([UIImage sd_imageWithData:tempImageData]); 

NSLog(@"end2___%@",[NSDate new]);

NSLog(@"jpeg__%lu\n webP__%lu",UIImageJPEGRepresentation(aParam.uploadImage, 0.75).length,imageData.length);

2017-07-07 10:34:55.351test[7754:2490842] end1___2017-07-07 02:34:55 +0000
2017-07-07 10:35:06.026test[7754:2490842] end2___2017-07-07 02:35:06 +0000
2017-07-07 10:35:06.093test[7754:2490842] jpeg__710685
 webP__31258 //字节

是因为本身图片压缩慢,还是因为所用的 libwebP 库过低(现在是 0.6.0,但是因为是 pod SDWebImage 所以是 0.5.1),还是因为转换方法的问题? 因为不懂安卓,请问安卓下和 iOS 区别大吗? SOS.

5158 次点击
所在节点    iDev
8 条回复
fds
2017-07-07 10:53:29 +08:00
压缩图片本来就不会太快吧,注意别堵塞主线程就行。
jialiangnull
2017-07-07 10:58:48 +08:00
@fds
```
UIImageJPEGRepresentation(aParam.uploadImage,0.75);
UIImagePNGRepresentation
```
都是毫秒级的,非常之快. 但是 webp 压缩图片慢的令人恐惧,而且许多交互并不是不堵塞主线程就可以的,试想换一个头像需要 6-7 秒,我觉得是不能忍受的.
honeycomb
2017-07-07 11:27:55 +08:00
webp 的压缩速度据说很慢
yautou
2017-07-07 13:00:34 +08:00
既然都说很慢,那为啥需要放在客户端来压缩呢?服务器来处理这个步骤不是更好?
jialiangnull
2017-07-07 13:03:05 +08:00
下面是 png 的转换
png-> webp(75) 1280x1280
1280x1280 大小(bit) 时间(s)
png 3537713 1s-2s
webp(75) 14336 5s-6s
jialiangnull
2017-07-07 13:05:24 +08:00
@yautou 因为是需求, 我想确定这个是只能在服务器做,还是客户端也可以做,是我用的代码层次的问题,还是本身这个转换就是非常慢.
fds
2017-07-07 15:25:10 +08:00
@jialiangnull 更换头像的话,你立即给用户换上新的,然后在背景慢慢压缩上传就完了呗。webP 压缩就是慢,解压其实也不是特别快的。
beepony
2017-07-07 16:38:31 +08:00
为什么要这么麻烦,又拍云支持 Webp 自适应功能,只要放在 CDN 上,请求头里带上 accept:image/webp 就可以自动转换了: https://www.upyun.com/webp

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/373668

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX