经过多个版本迭代,项目在release配置下的打包体积依旧轻松破百,应用体积过大导致的问题包括:
更长的构建时间,换个词就是加班
TEXT段体积过大会导致审核失败
用户不愿意下载应用
通常来说,资源文件能在应用体积包中占据1/3或者更多的体积,相比起代码(5kb/千行)的平均占用来说,对图片进行减包是最直接高效的手段,对图片资源的处理方式包括四种:
通过请求下载大图
使用工具压缩图片
查找删除重复图片
查找复用相似图片
考虑到由于项目开发分工的问题,方式1需要推动落地,所以本文不讨论这种处理方式。其他三种都能通过编写脚本实现自动化处理
图片压缩
图片压缩分为有损压缩和无损压缩两类,有损压缩放弃了一部分图片的质量换取更高的压缩比。网上主流的压缩工具有tinypng、pngquant、ImageAlpha和ImageOptim等,分别采用了一种或者多种压缩技术完成图片压缩
为什么png能够无损压缩
由于png格式的灵活性,同一张图片可以使用多种方式进行表示,不同方式占用的大小不一样。一般的软件会采用效率更高的方式来表示图片,所以这种情况下png图片存在巨大的优化空间。通常来说,从png文件中能去除的数据包括:
iTXt、tEXt和zTXt这些可以存储任意文本的数据区段
iCCP数据区段存储的profile等等
photoshop导出的png图片存在大量的额外信息
png图片有两种类型的数据块,一种是必不可缺的数据块称为关键数据块。另一种叫做辅助数据块,png文件格式规范指定的辅助数据块包括:
背景颜色数据块bKGD
基色和白色数据块cHRM
图像γ数据块gAMA
图像直方图数据块hIST
物理像素尺寸数据块pHYs
样本有效位数据块sBIT
文本信息数据块tEXt
图像最后修改时间数据块tIME
图像透明数据块tRNS
压缩文本数据块zTXt
其中tEXt和zTXt数据段中存在的数据包括:
关键字 | |
---|---|
Title | 图像名称 |
Author | 图像作者 |
Description | 图像说明 |
Copyright | 版权声明 |
CreationTime | 原图创作时间 |
Software | 创作图像使用的软件 |
Disclaimer | 弃权 |
Warning | 图像内容警告 |
Source | 创作图像使用的设备 |
Comment | 注释信息 |
本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/zhiliangjiankong-tupianjianbao.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:12月 12, 2018 at 10:20 下午