2013-03-28 66 views
11

我想了解网络是否允许查看渐进式 JPEG与否。HTML和显示<img/>元素

假设我们有一个服务器里(见progressive jpegs):

$ 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

$ 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文档

),用户代理需要下载整个图像,而渲染区域仅为256x128

或者相反一个用户代理,允许考虑到描绘区域:256x128,因此推断它只能处理渐进 JPEG的一部分。知道获得全分辨率是没有意义的,因为它不会在图像中添加任何细节(技术上质量层即使在低分辨率下也会产生影响,这仅仅是为了简化)。

通常情况下,我想知道一个应用程序,如谷歌地图中,​​如果用户代理可以终止(中止?)检索当前显示的图像,因为用户决定要在一些比较仅基于局部放大导致解压缩渐进式 JPEG(整个JPEG尚未在用户端)。

+0

只是为了澄清,如果Web浏览器允许中止对高分辨率图像渲染/下载过早时,它有足够的渐进式JPEG的分辨率来显示图像你问它的 -tag指定? – micke 2013-04-01 23:13:10

+0

正确。或者更一般地说“什么时候允许Web浏览器中止下载img src?” – malat 2013-04-02 07:58:53

+1

我怀疑任何当前的浏览器将有足够的解决方案时会中止下载,但是您的问题对浏览器开发人员来说是一个很好的激励。也许有人会首先实现你的问题所建议的,然后为你提供该特定浏览器的答案:-)考虑到下载完整的图像可能会有不利影响,因为你可能会失去一个本来可以用作优化的预载。 – 2013-04-02 08:18:11

回答

-1

据我了解你的问题,答案将主要取决于你想支持的浏览器。

浏览器行为可以通过第三方插件(如“Firebug”)轻松检查。这些插件可以显示一个页面的创建进度,请求的内容以及服务器发送和接收的字节数。在Firebug中,可以在“Net”标签中看到。

+0

不,我的问题不是关于特定的实现,而是标准的任务/建议/允许。 – malat 2013-04-08 11:29:45

7

在网站中使用渐进式JPEG的想法与节省带宽有关,并且更多的是为了向最终用户显示某些内容。浏览器无论如何都会下载完整的图像,但渐进式JPEG允许用户看到之前发生的事情。

对JPEG的W3 page这样说:

渐进式JPEG是重新排序的信息的一种手段,这样,只有一小部分已被下载后,整个图像的朦胧的视图被呈现,而不是只是一小部分的清晰视图。

因为包含IMG标签通常意味着您希望浏览器下载该资产,所以不会因为它确定下载“足够”而中止它。浏览器也不知道你打算如何处理图像 - 也许你稍后会放大图像,或者稍后需要以不同的尺寸显示图像。部分下载一次意味着浏览器可能需要稍后再次下载。

而且对JPEG的Wikipedia article指出:

然而,连续的JPEG不为广泛的支持,[来源请求],甚至一些软件,该软件不支持它们(如Windows 7之前的Internet Explorer版本)[12]仅在图像完全下载后才显示图像。

因此,即使某些浏览器在下载“足够”后确实放弃了这些连接,但没有足够的浏览器支持我考虑甚至首先使用它们。

+0

我的问题是关于标准允许的,而不是关于哪个特定的实现被破坏... – malat 2013-04-08 11:31:22

0

简而言之,没有标准的方法可以放弃img(渐进式或其他方式),而不必离开或中止页面或更改标签的src(这将删除部分图像)。我不知道任何黑客会这样做。

虽然这听起来像一个很好的功能,这将是在以下常见情况下,现有网站的问题:

  • 使用大逐行图像缩略图+预紧力的图片库(即Galleria做到这一点)
  • 任何依赖于onload事件的网站(如果可以中止/挂起,那么您的半渲染图像会被视为“加载”)?

由于这些原因,单单这将是一个坏主意,除非加入到规范作为属性(如弃用lowsrc属性或可能某种allowpartial属性的你在哪里明确要求这种行为)。作为跟随WHATWG讨论的人,我可以告诉你,几乎肯定会被拒绝,原因很简单,它增加了解决边缘问题的复杂性。如果真的需要这个功能,几年前在宽带几乎普及之前就会有这种需求。在游戏中的这一点,它本质上是多余的聪明的使用Javascript和/或缩略图。

+0

人们通过使用缩略图增加复杂性的事实清楚地表明缺少某些东西。你是说这个标准是这样写的:因为你阻止人们使用渐进式JPEG,JPEG-XR和/或JPEG 2000,对吧? – malat 2013-04-08 11:29:08

+0

我并不是说标准可以阻止你使用渐进式图像,我只是说它不允许渲染器根据一些任意的视觉决定来停止下载图像,而这些视觉决定什么是“足够”。如果你问它,你可能不得不提供一个更有说服力的用例。你的问题是“什么时候浏览器允许停止下载图像?”,答案是“当你离开/中止页面”。你们其余的问题基本上是一个我非常怀疑的提案,就像你说的那样。 – SpliFF 2013-04-08 13:59:06