WebP 是谷歌在 2010 年提出的一种新型的图片格式,放到现在来讲,已经不算是“新”技术了,毕竟已经有了更新的 JPEG XL 和 AVIF 。但是在日常工作中,大家时常会碰到保存下来的图片的后缀是 .webp。那么 WebP 到底有什么魔力,让越来越多的网站“抛弃”常用的 PNG、JPG 而青睐它呢?

了解 WebP

长期以来,加载速度一直是优化网站最重要的因素之一,访问者和搜索引擎都将调用页面所需的时间作为重要的评价标准。精简的代码或使用缓存机制是解决网站快速加载方案的一部分,而网页中展示的图片大小也影响着加载速度,这时 WebP 就有了用武之地。

WebP 图片格式来源于 VP8 视频编解码器,也就是 WebM 视频容器,是 WebM 视频格式的单个压缩框架。VP8 编解码器的一个强大功能就是能够进行帧内压缩,能将视频的每个帧都被压缩,再压缩帧与帧之间的差异。WebP 的压缩算法分为有损压缩算法和无损压缩算法。

有损压缩算法:基于 VP8 视频编解码器,它可以通过牺牲一些图像细节来减小文件大小。有损压缩算法可以根据图像的特征和颜色分布等信息,选择最佳的压缩方式和参数,以达到最小化文件大小的目的。

无损压缩算法:基于 LZ77 算法和 ANS 编码器,它可以在保持完整图像的情况下减小文件大小。无损压缩算法可以根据图像的特征和颜色分布等信息,选择最佳的压缩方式和参数。

WebP 的高效压缩和快速加载速度,使其成为网页设计的理想格式。WebP 广泛应用于许多网站和应用程序中,包括 Google Chrome 浏览器、YouTube、Facebook、Pinterest 和 WordPress 等。虽然前几年有部分浏览器不支持 WebP,到了今天,除了已经退休的 IE 浏览器,基本上浏览器都已经开放支持 WebP。

WebP 的优势

对于含有大量图片的网站,它们大部分会使用 WebP 格式的图片,不仅可以减少流量带宽,也可以减少用户访问的加载时间,提高用户体验。目前 WebP 已成为主流网站喜欢的图片格式。

更小的文件大小

相较于传统的 PNG、JPG,甚至是动图 GIF 的格式,WebP 比它们的空间更小。根据谷歌的测试,WebP 格式的图片可以比 JPEG 格式的图片小 26%-34%,比 PNG 格式的图片小 25%-34 %。

更快的加载速度

由于 WebP 格式的图片文件更小,所以可以更快地加载和显示,提高用户的访问速度和体验。特别是在移动设备和低带宽环境下,WebP 格式的图片可以更快地加载和显示,减少用户的等待时间和流量消耗。

高质量的图像显示

WebP 格式的图片可以提供高质量的图像显示效果,尤其是在有损压缩的情况下,可以保持比 JPEG 格式更好的图像质量。这是因为 WebP 格式的图片采用了基于 VP8 视频编解码器的压缩算法,可以在牺牲一部分细节的情况下保持更好的图像质量。

支持透明度、动画效果

WebP 格式的图片不仅可以支持有损和无损的压缩方式,还支持透明度和动画效果。特别是在处理透明度和动画效果时,WebP 格式的图片可以比 GIF 和 PNG 格式更小,同时保持更好的显示效果。

在网页中运用 WebP

既然 WebP 这么好用,那么如何在网页中运用 WebP 图片呢?这其实很简单,我们可以通过 HTML 代码,在网页中运用 WebP 格式的图片。例如:xml

<picture>
<source srcset="image.webp" type="image/webp">
<source srcset="image.jpg" type="image/jpeg">
<img src="data:image.jpg" alt="image">
</picture>

在上面的代码中, 元素包含了两个 元素和一个 元素。 元素用于指定不同格式的图片, 元素则是在所有格式的图片都无法显示时显示的默认图片。替换:对于不支持 WebP 格式的浏览器,可以使用 JavaScript 进行检测和替换。例如:stylus

var img = new Image();
img.onload = function() {
if (img.width > 0 && img.height > 0) {
document.getElementById('my-img').src = 'image.webp';
}
}
img.onerror = function() {
document.getElementById('my-img').src = 'image.jpg';
}
img.src = 'image.webp';

在上面的代码中,使用 JavaScript 创建一个新的 Image 对象,并指定其 src 属性为 WebP 格式的图片。如果图片能够正常加载,则将 元素的 src 属性设置为 WebP 格式的图片,否则将其设置为其他格式的图片。

这时,也有用户会担心,并不是所有的浏览器都支持 WebP,例如 IE。这里强烈推荐下又拍云 WebP 自适应功能,无需网站服务器和前端等层面技术上的任何改动,就能解除你的顾虑。在后台一键开启 WebP 自适应功能,即可通过 CDN 平台智能判断客户端浏览器是否支持 WebP 解码,如果支持则返回 WebP 格式图片,如果不支持则会返回原图,在客户端以及源站无需任何改动。

技术的发展总是迅速的,近两年来 JPEG XL 和 AVIF 两种新兴的图片格式已经逐渐开始流行,它们在压缩效率、图像细节保留等方面已经在一定程度上超过了 WebP,让我们期待一下未来的图片格式发展吧。

为什么大家都在用 WebP?的更多相关文章

  1. webp介绍与使用

        webp是谷歌10年发布的一种新的图片格式,支持有损压缩或无损压缩.据官方称无损压缩的webp在体积上要比png小26%,而有损压缩要比同质量jpg小25%~34%.经本人测试,由腾讯智图处理 ...

  2. 提升网站用户体验—WebP 图片的高效使用

    一.WebP 的由来 现代图像压缩技术对我们的生活方式影响很大.数码相机能将上千张高质量图片存储到一张内存卡里.智能手机可以与邻近设备快速分享高分辨率的图片.网站与手机等移动设备能快速展示各种富媒体. ...

  3. iOS性能之WebP

    当今互联网,无论网页还是APP,流量占用最大的,多数都是因为图片,越是良好的用户体验,对图片的依赖度越高.但是图片是一把双刃剑,带来了用户体验,吸引了用户注意,却影响了性能,因为网络请求时间会相对比较 ...

  4. 让浏览器全面兼容WebP图片格式

    WebP格式 WebP是Google推出的一种图片格式,它基于VP8编码,可对图像大幅压缩.与JPEG相同,WebP也是一种有损压缩,但在画质相同的情况下,WebP格式比JPEG图像小40%. Wik ...

  5. 关于H5在移动端架构的优化设计总结

    各大互联网公司采取的策略 一.百度移动前端首页 1. 对于首屏的静态文件css/js,在上线前全部编译直出到HTML文件中:整个首页的渲染只需要一次请求: 2.使用缓存:把不变的js/css/html ...

  6. 笨重的mfc还在基于系统控件,熟练的mfc工程师还比不过学习Qt一个月的学生开发效率高(比较精彩,韦易笑)

    作者:韦易笑链接:https://www.zhihu.com/question/29636221/answer/45102191来源:知乎著作权归作者所有,转载请联系作者获得授权. 更新:擦,本来只有 ...

  7. Android图片优化指南

    图片作为内存消耗大户,一直是开发人员尝试优化的重点对象.Bitmap的内存从3.0以前的位于native,到后来改成jvm,再到8.0又改回到native.fresco花费很多精力在5.0系统之前把B ...

  8. 如何用canvas拍出 jDer's工作照

    背景 在京东,就职满五年的老员工被称作"大佬",如果满了十年,那就要被称之为"超级大佬"了. 从 2016 年 5 月 19 日开始,每一年的这一天都被定为京东 ...

  9. day 35初识数据库

    一.数据库概述 1.什么是数据库?先来看看百度怎么说的. 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作.     所谓“数据库”系 ...

  10. 历时小半年总结之JAVA

    一.JavaSE 1.多线程 (1).进程与线程的区别? 答:进程是所有线程的集合,每一个线程是进程中的一条执行路径,线程只是一条执行路径. (2).为什么要用多线程? 答:提高程序效率 (3).多线 ...

随机推荐

  1. MassTransit类库Saga文档翻译

    翻译自 Saga State Machines Saga State Machines(状态机) Saga State Machines(状态机)以前被称为Automatonymous,从v8开始被合 ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (26)-- 算法导论5.1 1题

    一.证明:假设在过程 HIRE-ASSISTANT 的第 4 行中,我们总能决定哪一个应聘者最佳.则意味着我们知道应聘者排名的全部次序. 文心一言: 证明: 假设在过程 HIRE-ASSISTANT ...

  3. mybatis-plus是什么框架,使用起来简单吗?文末有彩蛋

    mybatis框架我们都熟悉了,是用来操作数据库的属于ORM框架.mybatis-plus是什么框架,看名称和手机似的,带有plus一定是加强版,其官网是:MyBatis-Plus (baomidou ...

  4. 解密Prompt系列8. 无需训练让LLM支持超长输入:知识库 & unlimiformer & PCW & NBCE

    这一章我们聊聊有哪些方案可以不用微调直接让大模型支持超长文本输入,注意这里主要针对无限输入场景.之前在BERT系列中我们就介绍过稀疏注意力和片段递归的一些长文本建模方案长文本建模 BigBird &a ...

  5. 一文搞懂什么是 API

    在我学习软件开发之前,API 听起来像是一种啤酒(IPA,印度淡色艾尔).如今我经常使用这个术语,事实上最近我还尝试在酒吧里点了一个 API,结果酒保给了我一个: 404 资源未找到的回应 无论是在科 ...

  6. Prometheus-3:一文详解promQL

    读前提示: 本文字数较多且紧凑,最好预留15min一次性看完,好营养,易吸收. promQL详解 Prometheus提供了内置的数据查询语言PromQL(全称为Prometheus Query La ...

  7. Django基本数据库操作

    Django基本数据库操作 @ 目录 Django基本数据库操作 ‍内容一:基本数据库配置 ‍内容二:ORM基本操作 ‍内容一:基本数据库配置 Django是一个流行的Python Web框架,它可以 ...

  8. Linux切换Root权限配置和无法切换排查

    1.wheel组 普通用户禁止su切换root 在默认的情况下,普通用户通过su可以切换到root用户下,为了加强系统安全性,使用Linux的特殊用户组wheel来实现,只有用户加入到wheel组当中 ...

  9. HTML超文本标记语言3

    三.HTML表单标签 1.form标签 <form> form标签 name=表单名称,action=表单提交的地址,method=表单提交方式:get/post get/post详解: ...

  10. 用go语言和正则表达式写的linux危险命令拦截

    需求如下: package main import "fmt" import "regexp" func main() { var s = "cat ...