图片大小优化
图片格式
jpeg
栅格图形,扩展名常用.jpg
不适合
- 线条图形
- 文字、图标图形
因为它的压缩算法不太适这些类型的图形;并且不支持透明度。
非常适合
- 颜色丰富的照片
- 彩色图大焦点图、通栏 banner 图;
- 结构不规则的图形
png
栅格图形,一种无损压缩的位图图形格式,支持索引、灰度、RGB 三种颜色方案以及 Alpha 通道等特性。
PNG 最初是作为替代 GIF 来设计的,能够显示 256 色,文件比 JPEG 或者 GIF 大,但是 PNG 非常好的保留了图像质量,支持 Alpha 通道的半透明特性。最高支持 24 位彩色图像(PNG-24)和 8 位灰度图像(PNG-8)。
不适合
由于是无损存储,彩色图像体积太大,所以不太适合。
非常适合
地图、透明、线条绘图、图标;边缘清晰,有大块相同颜色区域;颜色较少但需要半透明。
GIF
GIF (Graphics Interchange Format)
介绍
栅格图形。 支持 256 色; 仅支持完全透明和完全不透明; 如果需要比较通用的动 画, GIF 是唯一选择。
不适合
每个像素只有 8 比特, 不适合存储彩色图片。
非常适合
动画, 图标。
Webp
- Webp 是一种现代图像格式,可为图像提供无损压缩和有损压缩,这使得它非常灵活。由 Google 在购买 On2 Technologies 后发展出来,以 BSD 授权条款发布。
- 介绍:优秀算法能同时保证一定程序上的图像质量和比较小的体积;
- 可以插入多帧,实现动画效果;
- 可以设置透明度;
- 采用 8 位压缩算法。无损的 Webp 比 PNG 小 26%,
- 有损的 Webp 比 JPEG 小 25-34%,比 GIF 有更好的动画。
不适合
最多处理 256 色,不适合于彩色图片。
非常适合
适用于图形和半透明图像。
其他的一些占内存较小的图片后缀
按优化效果排
- jpeg-xl
- heif
- avif
- webp
按普及程度则是
- webp
- avif
- jpeg-xl
如何判断图片格式
看 Content-Type 比如
Content-Type: image/webp
图片组件可以用 web-component 封装
用工具进行图片压缩
png
压缩 png 可以使用 npm 包node-pngquant-native
优点: 跨平台,压缩比高,压缩 Png24 非常好
https://www.npmjs.com/package/node-pngquant-native
jpg
使用 npm 包jpegtran
http://jpegclub.org/jpegtran
gif
gifsicle 通过改变每帧比例,减小 git 文件大小
同时可以利用透明来达到更小的文件大小,目前公认的解决方案
http://www.lcdf.org/gifsicle/
使用要点:
-
优化级别设置为不小于 2,1 的话基本不压缩
-
将透明部分截去
图片尺寸随网络环境变化
不同网络环境下(Wifi/4G/3G)下 加载不同尺寸和像素的图片
通过在图片的后缀加不同参数来改变
assets/img100x100
assets/img1000x1000
用别的方式替代传统图片
- web font
- 使用 Data URI
- 即 base64 可以把 base64 代码以 css 文件的形式缓存在本地
- 使用雪碧图
服务端做图片优化
前端只要图片名称后加参数就行,服务端来做图片优化方案