源码

质量监控-图片减包

文章链接

经过多个版本迭代,项目在release配置下的打包体积依旧轻松破百,应用体积过大导致的问题包括:

  • 更长的构建时间,换个词就是加班

  • TEXT段体积过大会导致审核失败

  • 用户不愿意下载应用

通常来说,资源文件能在应用体积包中占据1/3或者更多的体积,相比起代码(5kb/千行)的平均占用来说,对图片进行减包是最直接高效的手段,对图片资源的处理方式包括四种:

  1. 通过请求下载大图

  2. 使用工具压缩图片

  3. 查找删除重复图片

  4. 查找复用相似图片

考虑到由于项目开发分工的问题,方式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注释信息
(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/zhiliangjiankong-tupianjianbao.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:12月 12, 2018 at 10:20 下午

热评文章

发表回复

[必填]

我是人?

提交后请等待三秒以免造成未提交成功和重复