2013-03-28 64 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