当前位置: 首页 > 面试题库 >

webp与jpg、png比较,它有什么优劣势?如何选择?

井宪
2023-03-14
本文向大家介绍webp与jpg、png比较,它有什么优劣势?如何选择?相关面试题,主要包含被问及webp与jpg、png比较,它有什么优劣势?如何选择?时的应答技巧和注意事项,需要的朋友参考一下
优势
  • 更优的图像数据压缩算法 带来更小的图片体积
  • 肉眼识别无差异的图片质量
  • 支持有损和无损压缩
  • 支持动画 透明
  • 色彩丰富 24-bit颜色数
劣势
  • 存在兼容性问题
选择

​ 当 图片较少 体积不大 且存在兼容性问题时,兼容性方法处理起来较为复杂 可以选择传统格式

​ 当图片较多 且不存在兼容性问题或者兼容性方法处理起来较为简单时 便使用webp格式

兼容性处理
1.通过picture标签进行选择判断
<picture>
    <source srcset="img/pic.webp" type="image/webp">
    <source srcset="img/pic.jpg" type="image/jpeg">
    <img src="img/pic.jpg">
</picture>

该种方法要求在每个要请求webp图片的标签下都要通过picture标签来进行兼容性处理,
同时注意该标签在IE的兼容性并不是很好,不过已经比webp的兼容性好一些。

2.通过服务端判断请求头中的Accept的值判断是否支持webp

通过HTTP request header中是否存在Accept: image/webp来判断,
这种方法的缺点在于:很多时候我们的图片等静态资源都会放到CDN服务器上,在这个层面加上判断webp的逻辑会更麻烦一些

3.由浏览器端判断是否支持WebP格式
if(document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0){
   //  该浏览器支持WebP格式的图片
 }

该种方法的原理为:

HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。

1.如果画布的高度或宽度是0,那么会返回字符串“data:,”。

2.如果传入的类型非“image/png”,但是返回的值以“data:image/png”开头,说明该传入的类型是不支持的。

3.Chrome支持“image/webp”类型。

 类似资料:
  • 本文向大家介绍什么是Spring Actuator?它有什么优势?相关面试题,主要包含被问及什么是Spring Actuator?它有什么优势?时的应答技巧和注意事项,需要的朋友参考一下 这是Spring Boot中最常见的面试问题之一。根据Spring文件: 执行器是一个制造术语,指的是移动或控制某物的机械装置。执行机构可以从一个小的变化中产生大量的运动。 众所周知,Spring Boot提供了

  • 问题内容: 用…实现事情 似乎 已经 很简单 了… 与 ngResource相比 ,使用Restangular 有哪些优点/缺点? 1.1.3 将返回承诺,并且可以使用[最新的PRcommit来实现。将来会提供支持来支持Restangular所做的其他动词吗?如果发生这种情况,Restangular似乎将消失并变得不耐烦。 问题答案: 我是Restangular的创建者。 我已经在自述文件中创建了

  • 问题内容: Java 5以Executor框架的形式引入了对线程池执行异步任务的支持,其核心是java.util.concurrent.ThreadPoolExecutor实现的线程池。Java 7以java.util.concurrent.ForkJoinPool的形式添加了备用线程池。 查看它们各自的API,ForkJoinPool在标准情况下提供了ThreadPoolExecutor功能的超

  • 出于好奇,如果在java8样式中使用Comparator,即使用Lambda表达式比常规比较有任何优势,即。 一种按id排序的方法是:- 其他方法可以是Java 8 way:- 与前一种方法相比,后一种方法(< code>java-8方法参考)是否有性能优势? 请帮忙!!!

  • 我对Spring框架相当陌生,所以我为这个愚蠢的问题道歉。我一直在学习Javabean;我也一直在阅读Spring框架是如何成为bean容器的,以及如何有不同类型的bean(使用JavaBeans的优势是什么?)。 然而,我仍然不明白他们为什么如此强大。如果我们想,比如说,创建一个Spring web应用程序,我们不能不使用bean,而只使用POJO吗?与POJO相比,使用Java bean的真正

  • 问题内容: 最近,我正在与另一位程序员讨论重构充满“ if”语句的巨大(1000行)方法的最佳方法。 该代码是用Java编写的,但我想这个问题也可能在其他语言(例如C#)中发生。 为了解决这个问题,他建议使用责任链模式。他建议开设一个基本的“处理程序”类。然后,“ Handler1”,“ Handler2”等将扩展“ Handler”。 然后,处理程序将具有“ getSuccessor”方法,该方