2010年,谷歌发布了一种新的图片格式:WebP,它是可以当初png和jpg的一种替代格式,在不损失图片质量的前提下,会尽可能的减少文件大小.
WebP有哪些优点呢?
由于WebP提供的性能和优点,它简直完美。不像其他屙屎,WebP有无损和有损两个压缩方式,还支持动画和透明度
WebP | png | jpg | gif | |
---|---|---|---|---|
Lossy compression | √ | √ | √ | x |
Lossless compression | √ | √ | √ | √ |
Transparency | √ | √ | x | √ |
Animation | √ | x | x | √ |
即使有这么多的优点,webp依然提供比其他格式更小的文件大小,在这个测试中,web有损图片比jpg格式要小30%,无损图片要比png格式小25。
怎么转换到webp格式呢
在线工具
命令行工具
cwebp是一个不错的工具,可以转换图片到webp格式1
2// cwebp -q [图片大小] [输入] -o [输出]
cwebp -q 75 image.png -o image.webpnode工具
imagemin,还有它的插件imagemin-webp,是一个转换图片到webp格式的工具
下面这个例子将所有的png和jpg图片转成webp1
2
3
4
5
6
7
8
9
10/* convert-to-webp.js */
const imagemin = require("imagemin");
const webp = require("imagemin-webp");
imagemin(["*.png", "*.jpg"], "images", {
use: [
webp({ quality: 75})
]
});sketch
可以使用sketch导出webp格式的图片
当下环境如何在开发中使用webp格式呢
可以先查看一下webp的兼容性
可以看到,当今各端支持率已高达70%多,虽然webp有这么多的有点,但是也不能直接使用,而不提供一种向后兼容的方式,否则在不支持的浏览器中,用户体验会很差。
我们可以使用HTML5中的
1 | <picture> |
source标签作为不同的源,img标签作为当浏览器不支持时的一种回退方案,当前
除了html的办法,当然还有其他方案,比如:
1 | var isSupportWebp = !![].map && document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0; |
或者
1 | window.isSupportWebp = false;//是否支持 |