摘要:
Android Studio 2.3 正式版发布了,该版本包含一些新特性,包括
- 对 WebP 支持的更新;
- ConstraintLayout 库支持更新和布局编辑器的部件面板。
- 提供一个新的 App Link 助手可以帮助你在应用中构建 URI 的统一视图。
- 新的运行按钮提供更直观和可靠的立即运行体验。
- 最后是 Android 模拟器的测试,支持文本的复制和粘贴。
这次就说说 Android Studio 对 webP的支持
关于 webP
什么是 WebP?
WebP 的优势
WebP 在各大互联网公司已经使用得很多了,国外的有 Google(自家的东西肯定要用啦,Chrome Store 甚至已全站使用 WebP)、Facebook 和 ebay,国内的有淘宝、腾讯和美团等。
优势主要有以下:
- PNG 转 WebP 的压缩率要高于 PNG 原图压缩率,同样支持有损与无损压缩
- 转换后的 WebP 支持 Alpha 透明和 24-bit 颜色数,不存在 PNG8 色彩不够丰富和在浏览器中可能会出现毛边的问题
- WebP为网络图片提供了无损和有损压缩能力,同时在有损条件下支持透明通道。据官方实验显示:无损WebP相比PNG减少26%大小;有损WebP在相同的SSIM(Structural Similarity Index,结构相似性)下相比JPEG减少25%~34%的大小;有损WebP也支持透明通道,大小通常约为对应PNG的1/3。(同时肉眼几乎无法看出差异)
更进一步了解可以查阅下面的相关博客
相关博客:
Android Studio 2.3 对 WebP 支持
Android Studio 2.3使用有一段时间了,在工作之余也尝试了一把将目前项目中的图片利用 Android Studio 提供的工具将项目中的 png 图片转化成 webp,最终项目瘦身成功。最初的10M 左右减到了 8点多 M,成果显著。建议项目比较庞大的可以去替换下。
如何将 png 转化成 webp?
Convert to WebP2.点击后弹出如下图内容,有需要更改设置可以进行更改,没有可直接点击ok。 可以自己的需要去更改这些状态
3.最后就出现如下图所示内容:
图片小了很多,(≧▽≦)/激动通过拖动Quality那个轴改吧图片的压缩质量,
中间的Difference表示原图和压缩后的图的一个差异。压缩的越多,difference显示的越清楚。
同时也支持将webp转成png。
APP瘦身
- 赶紧把项目中的图片按照默认方式去转换下
- 对比下前后 APP 的大小
前后减少了大约1M 多。
其实我们的项目本身就已经很小了,才十左右,这点我们还是一直会去注意的,一直会做重构和瘦身,保持 APP 的苗条身材。
目前这个转化我是按照系统默认的直接将 png 转成 webp。其实针对很多图片可以更大压缩值的,比如Splash的大图片。这样也可以加快 app 的启动速度。
嗯。我又把 webp 换成 png了,蛋疼的兼容性问题。
问题原因
从官方文档中可以看到在Android4.0到Android4.2.1之间的版本不支持无损压缩和透明格式的WebP图片的编解码。所以如果从要解析的WebP图片中包含无损压缩或透明格式,且当前是Android4.0到Android4.2.1之间的系统,则BitmapFactory解码时就会出错。 Android 中不同格式图片支持此外,个别Android机型虽然是Android4.0及以上的版本,但是在原生ROM基础上去掉了WebP功能。
分析
解决方案
虽然在4.0以上都支持了,但是4.0-4.2版本的不支持
Google 爹这点没有做的很好,批评下。
既然不支持Alpha,那么不要Alpha肯定是可以的。
然而在我们项目中几乎所有的图片都是带有Alpha的。
这个时候我用命令把 png转webp。
命令:
cwebp abc.png -noalpha -o abc.web
不要Alpha,效果是这样的:
原图 失去Alpha这怎么玩。。。
然后还有另外一种方式,就是兼容低版本,需要使用 so 包,看了下挺麻烦的。我决定,等我们项目最低支持到4.2的时候再换成 webp。
嗯,
看了下4.0-4.2的用户还有几百个,坚持就好!