判断浏览器是否支持webp,如何实现优雅降级
创始人
2024-05-31 22:34:55
0

浏览器支持情况:浏览器支持webp的情况 

1、如何判断浏览器是否支持webp格式

方法1: 利用img实例加载base64 webp的方式进行判断

function checkWebPSupport() {var img = new Image();img.onload = function() {var isSupported = (img.width > 0) && (img.height > 0);// 支持WebP格式if (isSupported) {console.log('WebP is supported.');} else {console.log('WebP is not supported.');}};img.onerror = function() {console.log('WebP is not supported.');};img.src = 'data:image/webp;base64,UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==';
}

这个字符串表示了一张1像素的WebP格式的图片,它的Base64编码字符串为UklGRj4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=

具体来说,代码的执行流程如下:

  1. 创建一个新的Image对象。
  2. 设置onload事件处理函数,当图片加载完成时触发。
  3. 设置onerror事件处理函数,当图片加载失败时触发。
  4. 将WebP格式的图片的URL赋值给Image对象的src属性,这会触发图片的加载过程。
  5. 如果图片加载成功(即onload事件被触发),并且图片的宽度和高度都大于0,则说明当前浏览器支持WebP格式,否则说明不支持。
  6. 如果图片加载失败(即onerror事件被触发),则说明当前浏览器不支持WebP格式。

方法2: 使用canvas的toDataURL方法转换为base64格式的数据URI进行判断。

function checkWebpSupport() {return document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0;
}

具体解释如下:

  1. 首先,使用document.createElement('canvas')创建一个canvas元素;
  2. 然后,调用canvas元素的toDataURL()方法将其转换为base64格式的数据URI;
  3. 接着,使用indexOf()方法判断该URI是否以"data:image/webp"开头;
  4. 最后,如果返回的是0,则表示以"data:image/webp"开头,即当前浏览器支持WebP格式的图片;如果返回的是-1,则表示不支持WebP格式的图片。

toDataURL()是Canvas API提供的一个方法,用于将canvas元素上的图像数据转换为base64格式的数据URI。

语法:canvas.toDataURL(type, encoderOptions);

参数说明:

  • type:可选参数,表示图片格式,默认为image/png。
  • encoderOptions:可选参数,表示图片质量,范围为0到1,默认为0.92。该参数只有在type为image/jpeg或image/webp时有效。

该方法会返回一个以"data:image/png;base64,"开头的base64格式的数据URI。其中,type参数表示图片格式,可以设置为"image/jpeg"、"image/png"、"image/webp"等。encoderOptions参数表示图片质量,只有当type为"image/jpeg"或"image/webp"时有效。

方法3: 使用Modernizr库判断

Modernizr.on('webp', function(result) {if (result) {console.log('浏览器支持WebP格式!');} else {console.log('浏览器不支持WebP格式!');}
});

        使用Modernizr库判断:Modernizr是一个流行的前端库,它提供了大量的特性检测功能,包括检测浏览器是否支持WebP格式。只需要在页面中引入Modernizr库,并调用其中的webp检测方法即可。

2、如何进行优雅降级时



这段HTML代码使用了元素,这是HTML5新增的元素,它的作用是提供一种优雅降级的解决方案,以确保图片在各种浏览器中都能够正确地展示。

元素中,使用了两个子元素:

  • 元素:用于指定不同格式和大小的图片资源,以便浏览器根据当前设备和网络情况选择最佳的图片资源。在这个示例中,元素指定了一张WebP格式的图片,srcset属性指定了图片的地址,并使用type属性来指定图片的MIME类型为image/webp
  • 元素:在元素无法加载或不满足条件时,会使用元素加载兜底的PNG格式的图片。src属性指定了图片的地址,alt属性则提供了一段替代文字,用于在图片无法显示时提供文字描述。

总的来说,这段HTML代码的作用是:先尝试加载WebP格式的图片,如果浏览器支持WebP格式就显示这张图片,否则就显示兜底的PNG格式图片,以确保无论浏览器是否支持WebP格式,都能够正确地展示图片。

3、如何转换为webp格式

  1. 使用在线工具转换:有许多在线工具可以将图片转换为 WebP 格式,例如 Convertio(https://convertio.co/zh/png-webp/)和 Online Convert(https://www.online-convert.com/)。你可以将你的图片上传到这些工具中,并将输出格式设置为 WebP,然后下载生成的 WebP 格式的图片。

  2. 使用构建工具自动化转换:许多前端构建工具都提供了自动化转换图片格式的插件或模块,例如 gulp-webp(https://www.npmjs.com/package/gulp-webp)和 imagemin-webp(https://www.npmjs.com/package/imagemin-webp)。你可以使用这些工具在构建过程中将你的 PNG、JPEG 等格式的图片自动转换为 WebP 格式。

  3. Google 的 WebP 编码器:这是一个开源的工具,可以将 PNG、JPEG 等格式的图片转换为 WebP 格式。你可以在 https://developers.google.com/speed/webp/docs/using 来了解如何使用它。

  4. ImageMagick:这是一个功能强大的命令行图像处理工具,可以将图片转换为 WebP 格式。你可以在它的官网(https://imagemagick.org/)了解更多信息。

  5. GIMP:这是一个免费的图像编辑器,可以将图片转换为 WebP 格式。你可以在它的官网(https://www.gimp.org/)下载它。

在将图片转换为 WebP 格式之前,你应该先评估你的应用程序是否需要使用 WebP 格式。通常情况下:

(1)WebP 格式适用于需要保持高图像质量同时提供快速加载时间的场景,例如网站中的轮播图、图片集等。

(2)但对于一些不需要高质量图像的场景,例如简单的图标、按钮等,使用 SVG 或 PNG 格式通常更好。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...