【发布时间】:2013-03-18 16:37:10
【问题描述】:
我正在尝试了解网络是否允许查看 渐进式 JPEG。
假设我们有一个服务器(见progressive jpegs):
$ identify /var/www/test.jpg
/var/www/test.jpg JPEG 2048x1080 2048x1080+0+0 8-bit DirectClass 129KB 0.020u 0:00.019
$ identify -verbose /var/www/test.jpg | grep Inter
Interlace: JPEG
现在如果我们放置以下 HTML 文档:
$ cat /var/www/test.html
<!DOCTYPE html>
<html>
<head><title>jpg test</title></head>
<body>
<p><img src="test.jpg" width="256" height="128"></p>
</body>
</html>
我试图了解(根据img element)是否需要用户代理来下载整个 2048x1080 图像,而渲染区域仅为256x128。
或者相反一个User Agent,被允许考虑渲染区域:256x128,因此推断它只能处理progressive的一部分> JPEG。知道拥有全分辨率没有意义,因为它不会为图像添加任何细节(从技术上讲,即使在低分辨率下,质量层也会产生影响,这只是为了简化)。
通常,我想知道在诸如谷歌地图之类的应用程序中,用户代理是否可以中止(暂停?)当前显示的图像的检索,因为用户决定再放大一些仅基于解压缩 渐进式 JPEG 的部分结果(整个 JPEG 尚未在用户端)。
更新:事实证明,网络正在尝试一种不同的方法,使用 HTML 中的 loading 属性:
<img src="example.jpg" loading="lazy" alt="example" />
【问题讨论】:
-
澄清一下,您是在询问是否允许 Web 浏览器过早地中止渲染/下载高分辨率图像,因为它有足够的渐进式 JPEG 以它的分辨率显示图像
-标签指定?
-
正确。或者更笼统地说“什么时候允许网络浏览器中止下载 img src ?”
-
我怀疑任何当前的浏览器在具有足够分辨率时都会中止下载,但您的问题对浏览器开发人员来说是一个很好的激励。也许有人首先实现了您的问题所建议的内容,然后为您提供了该特定浏览器的答案 :-) 还要考虑不下载完整图像可能有缺点,因为您可能会丢失可能作为优化的预加载。
-
现在我想起来了,如果我是一个超级优秀的浏览器开发者,有很多时间,我想我会在分辨率足够的时候暂停下载,而不是中止它
-
...等有足够的带宽再恢复
标签: html web-applications jpeg w3c