高质量编程与性能调优之图片优化| 青训营

113 阅读2分钟

图片是大部分网页的重要组成部分,一般情况下,我们不会太关注这方面的问题,需要显示图片直接一个 img 标签搞定。但实际上,无论是对于提高加载速度,还是对于优化用户体验,优化图片都是一个重要的手段。现在我们从图片大小角度分析图片优化。

减小图片大小

1、选择合适的图片格式

如果效果真的需要图片来表现,那么选择图片格式是优化的第一步。以下是关于各图片格式的介绍。

  1. jpg有损压缩,压缩率高,不支持透明
  2. png支持透明,浏览器兼容好,无损压缩,体积大于jpg
  3. png8 —— 256色 + 支持透明
  4. png24 —— 2^24色 + 不支持透明
  5. png32 —— 2^24色 + 支持透明
  6. webp压缩程度更好,在ios webview有兼容性问题,pc端可在检测支持webp后使用检测客户端是否支持webp
  7. gif 支持动图

实际应用中应根据不同场景选择图片格式:

  • jpg —— 大部分不需要透明图片的业务场景
  • png —— 大部分需要透明图片的业务场景
  • webp —— 安卓全部、pc端可在检测支持webp后使用
  • gif —— 体积不大的动画,体积过大,建议用视频代替gif图

2、确定合适的尺寸

不同终端对同一个图片需求不一样,可以根据终端加载不同的图片来节省没必要的流量。

  • 一倍图:当这个比率为1:1时,使用1个设备像素显示1个CSS像素。
  • 二倍图:当这个比率为2:1时,使用4个设备像素显示1个CSS像素。
  • 三倍图:当这个比率为3:1时,使用9(3*3)个设备像素显示1个CSS像素。

pc一般使用一倍图就可以,手机端建议使用二倍图。

3、压缩图片

在线工具:

  • tinypng:支持压缩png、jpg,压缩率高
  • 智图:腾讯出品,支持压缩png、jpeg、gif,并支持生成一张webp格式图片
  • svg压缩:支持压缩svg

构建工具:

  • gulp:gulp-imagemin:支持PNG, JPEG, GIF and SVG
  • webpack:1、image-webpack-loader:支持PNG,JPEG,GIF,SVG和WEBP图像;2、 imagemin-webpack-plugin:可以优化一些因为loader局限性优化不了的图像。

总结

图片优化的手段总是随着浏览器特性的升级,网络传输协议的升级,以及用户对体验要求的提升而不停地更新迭代,几年前适用的或显著的优化手段,几年后不一定仍然如此。深入学习并掌握多种图片优化方法,根据不同情况进行选择,并且及时更新优化思路,以适应技术的发展,是至关重要的。