Mobile 使用canvas而不是img的好处是什么?

Mobile 使用canvas而不是img的好处是什么?,mobile,canvas,image,Mobile,Canvas,Image,我目前正在开发一个移动应用程序,我只是想知道使用canvas或img标签是否更好(性能方面)。我将查询我的网站的实际图像。只是想知道两者之间是否有好处 不!如果您显示的是静态内容,则速度较慢且更加迟钝和做的事情完全不同,前者用于使用JavaScript的动态图形,后者用于从URI检索的静态图像。不!如果您显示的是静态内容,则速度较慢且更加迟钝和做的事情完全不同,前者用于使用JavaScript的动态图形,后者用于从URI检索的静态图像。浏览器倾向于在HTML流式传输时加载IMG源:因此,您将在页

我目前正在开发一个移动应用程序,我只是想知道使用canvas或img标签是否更好(性能方面)。我将查询我的网站的实际图像。只是想知道两者之间是否有好处

不!如果您显示的是静态内容,
则速度较慢且更加迟钝
做的事情完全不同,前者用于使用JavaScript的动态图形,后者用于从URI检索的静态图像。

不!如果您显示的是静态内容,
则速度较慢且更加迟钝
做的事情完全不同,前者用于使用JavaScript的动态图形,后者用于从URI检索的静态图像。

浏览器倾向于在HTML流式传输时加载IMG源:因此,您将在页面完全加载之前看到图像。另一方面,画布将依赖于正在加载的DOM,因此(通常)在触发DOMContentLoaded事件之前不会加载。再加上创建画布上下文的延迟和内存需求,如果图像是真正静态的,几乎可以肯定这不是您想要的


如果你想对图像做一些有趣的事情,为什么不将图像加载到IMG标记中,然后在加载后将其转换为画布来进行转换呢

浏览器倾向于在HTML流式传输时优化加载IMG源:因此,在页面完全加载之前,您将看到一幅图像。另一方面,画布将依赖于正在加载的DOM,因此(通常)在触发DOMContentLoaded事件之前不会加载。再加上创建画布上下文的延迟和内存需求,如果图像是真正静态的,几乎可以肯定这不是您想要的


如果你想对图像做一些有趣的事情,为什么不将图像加载到IMG标记中,然后在加载后将其转换为画布来进行转换呢

主要的好处是避免不必要的浏览器解码

要使浏览器能够运行,他们需要:

  • 检索图像文件的编码内容
  • 将图像从原始JPEG、GIF、PNG或WebP格式解码为内存中的位图
  • 把它画在屏幕上
  • 当用户滚动并调整大小时,会出现性能问题。解码尤其昂贵。然而,当我们上下滚动页面时,浏览器会试图检索以前占用的内存(即当前滚动区域之外的内容)。这意味着,每当图像从屏幕边缘重新出现时,浏览器将不得不再次经历同样昂贵的解码过程。当我们在一个长页面上有很多图片时,浏览器很可能会在滚动时结巴

    画布的不同之处:浏览器不会回收画布内部的解码信息。因此,通过使用画布渲染图像,我们避免了不必要的解码

    但当然,如果我的目标是移动设备,我会切换回图像标签,让浏览器做他们的工作,因为内存不足


    我认为这是一种特定于浏览器的策略,用于处理解码图像和有限内存之间的冲突。我更具体地说的是Chrome,因为这个过程在Timeline开发工具中是可见的。

    主要的好处是避免不必要的浏览器解码

    要使浏览器能够运行,他们需要:

  • 检索图像文件的编码内容
  • 将图像从原始JPEG、GIF、PNG或WebP格式解码为内存中的位图
  • 把它画在屏幕上
  • 当用户滚动并调整大小时,会出现性能问题。解码尤其昂贵。然而,当我们上下滚动页面时,浏览器会试图检索以前占用的内存(即当前滚动区域之外的内容)。这意味着,每当图像从屏幕边缘重新出现时,浏览器将不得不再次经历同样昂贵的解码过程。当我们在一个长页面上有很多图片时,浏览器很可能会在滚动时结巴

    画布的不同之处:浏览器不会回收画布内部的解码信息。因此,通过使用画布渲染图像,我们避免了不必要的解码

    但当然,如果我的目标是移动设备,我会切换回图像标签,让浏览器做他们的工作,因为内存不足


    我认为这是一种特定于浏览器的策略,用于处理解码图像和有限内存之间的冲突。我更具体地说的是Chrome,因为这个过程在Timeline开发工具中是可见的。

    您实际测量过吗?有推荐人吗?这听起来是个坏主意。我在许多项目中使用过它,并且在性能上得到了明显的改进。我会做更多的研究,稍后再讨论细节和例子。你真的测量过这个吗?有推荐人吗?这听起来是个坏主意。我在许多项目中使用过它,并且在性能上得到了明显的改进。我会做更多的研究,稍后会用细节和例子来讨论这个问题。