2013-03-28 42 views
11

Tôi đang cố gắng hiểu liệu trang web có cho phép xem tiến bộ JPEG hay không.HTML và hiển thị phần tử <img/>

Giả sử chúng ta có một máy chủ ở đâu (xem 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 

bây giờ nếu chúng ta đặt các tài liệu HTML sau:

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

Tôi cố gắng để hiểu được hay không (theo img element), một tác nhân người dùng được yêu cầu tải xuống hình ảnh toàn bộ2048x1080 trong khi vùng hiển thị chỉ là 256x128.

Hoặc trên trái một User Agent, được phép đưa vào tài khoản các khu vực rendering: 256x128, và do đó suy ra nó chỉ có thể xử lý một phần của tiến JPEG. Biết rằng không có điểm nào trong việc có độ phân giải đầy đủ vì nó sẽ không thêm bất kỳ chi tiết nào vào hình ảnh (về mặt kỹ thuật, một lớp chất lượng sẽ tác động ngay cả ở độ phân giải thấp, đây chỉ là để đơn giản hóa). Thông thường, tôi muốn biết trong một ứng dụng như bản đồ google, nếu Tác nhân người dùng có thể hủy (tạm ngưng?) Truy xuất hình ảnh hiện được hiển thị, vì Người dùng quyết định thu phóng một số chi tiết hơn chỉ dựa trên một phần kết quả từ việc giải nén một số ảnh lũy tiến JPEG (toàn bộ JPEG chưa nằm ở phía Người dùng).

+0

Chỉ cần làm rõ, bạn đang yêu cầu nếu trình duyệt web được phép hủy bỏ render/tải cho một hình ảnh độ phân giải cao sớm khi nó có đủ của một JPEG tiên tiến để hiển thị hình ảnh ở độ phân giải mã số của nó chỉ định? – micke

+0

Chính xác. Hay nói chung là "Khi nào trình duyệt web được phép hủy bỏ việc tải xuống một img src?" – malat

+1

Tôi nghi ngờ bất kỳ trình duyệt hiện tại nào sẽ hủy tải xuống khi có đủ độ phân giải, nhưng câu hỏi của bạn là một ưu đãi tốt cho các nhà phát triển trình duyệt.Có thể ai đó trước tiên thực hiện câu hỏi của bạn, và sau đó cung cấp cho bạn câu trả lời cho trình duyệt cụ thể đó :-) Hãy xem xét việc không tải xuống toàn bộ hình ảnh có thể có những nhược điểm, vì bạn có thể bị mất tải trước có thể được dự định là tối ưu hóa. –

Trả lời

-1

Theo như tôi hiểu câu hỏi của bạn, câu trả lời sẽ phụ thuộc phần lớn vào các trình duyệt bạn muốn hỗ trợ.

Có thể dễ dàng kiểm tra hành vi trình duyệt bằng các plugin của bên thứ ba như "Firebug". các plugin này có thể cho bạn biết tiến trình tạo trang, những gì đang được yêu cầu và số lượng byte được gửi đến và đi từ máy chủ. Trong Firebug nó có thể được nhìn thấy trong tab "Net".

+0

Không, câu hỏi của tôi không phải là về việc thực hiện * a * cụ thể mà thay vào đó là nhiệm vụ/đề xuất/cho phép tiêu chuẩn. – malat

7

Ý tưởng sử dụng JPEG tiến bộ trong một trang web ít có liên quan đến việc tiết kiệm băng thông và nhiều việc phải làm hơn khi hiển thị nội dung nào đó cho người dùng cuối trước đó. Trình duyệt vẫn tải xuống toàn bộ hình ảnh bất kể điều gì, nhưng các ảnh JPEG tiến bộ cho phép người dùng thấy điều gì đó xảy ra trước đó.

Các W3 page trên JPEG nói điều này:

Progressive JPEG là một phương tiện để sắp xếp lại những thông tin do đó, sau khi chỉ là một phần nhỏ đã được tải, một cái nhìn mơ hồ của toàn bộ hình ảnh được trình bày chứ không phải là một nhìn sắc nét chỉ là một phần nhỏ.

Vì việc bao gồm thẻ IMG thường có nghĩa là bạn muốn trình duyệt tải xuống nội dung đó, nó sẽ không hủy bỏ nó một phần đơn giản chỉ vì nó được xác định tải xuống "đủ". Trình duyệt cũng không biết bạn định làm gì với hình ảnh sau này - có thể bạn sẽ phóng to nó sau này, hoặc có thể nó sẽ cần hiển thị nó sau ở một kích thước khác. Tải xuống một phần một lần có nghĩa là trình duyệt có thể phải tải xuống lại sau.

Wikipedia article trên JPEG chỉ ra:

Tuy nhiên, hình ảnh JPEG tiên tiến không được hỗ trợ rộng rãi, [cần dẫn nguồn] và thậm chí một số phần mềm mà không hỗ trợ họ (ví dụ như các phiên bản của trình duyệt Internet Explorer trước khi Windows 7) [12] chỉ hiển thị hình ảnh sau khi nó đã được tải xuống hoàn toàn.

Vì vậy, ngay cả khi một số trình duyệt đã hủy kết nối sau khi tải xuống "đủ", không đủ trình duyệt hỗ trợ tôi xem xét ngay cả khi sử dụng chúng ngay từ đầu.

+0

Câu hỏi của tôi là về những gì tiêu chuẩn cho phép, không phải về việc thực hiện cụ thể nào bị hỏng ... – malat

0

Câu trả lời ngắn gọn là không có cách tiêu chuẩn nào để hủy bỏ img (tiến bộ hoặc theo cách khác) mà không rời hoặc hủy trang hoặc thay đổi thẻ src (và điều này sẽ xóa hình ảnh một phần). Tôi không biết bất kỳ hack nào cũng sẽ làm được.

Trong khi điều này nghe có vẻ giống như một tính năng tuyệt vời đó sẽ là vấn đề đối với các trang web hiện trong các trường hợp phổ biến sau đây:

  • Một thư viện hình ảnh sử dụng hình ảnh tiến bộ lớn như hình thu nhỏ + tải trước (ví dụ, Galleria thực hiện điều này)
  • BẤT CỨ trang web nào dựa trên các sự kiện onload cho hình ảnh (tại điểm nào hình ảnh được hiển thị một nửa của bạn được coi là "được tải" nếu nó có thể hủy bỏ/tạm ngưng)?

Đối với những lý do này một mình nó sẽ là một ý tưởng tồi trừ khi được bổ sung vào spec như một thuộc tính (như phản lowsrc thuộc tính hoặc có thể một số loại allowpartial thuộc tính mà bạn đang yêu cầu một cách rõ ràng cho hành vi này). Là ai đó đã theo dõi các cuộc thảo luận WHATWG tôi có thể nói với bạn rằng nó gần như chắc chắn sẽ bị từ chối hoàn toàn vì lý do đơn giản là nó thêm sự phức tạp để giải quyết một vấn đề rìa. Nếu tính năng này thực sự được yêu cầu thì có thể đã có nhu cầu về nó nhiều năm trước khi băng thông rộng trở nên phổ biến. Tại thời điểm này trong game, nó cơ bản thừa với việc sử dụng thông minh Javascript và/hoặc hình thu nhỏ.

+0

thực tế là mọi người thêm tính phức tạp bằng cách sử dụng hình thu nhỏ, rõ ràng cho biết rằng có điều gì đó bị thiếu. bạn đang nói rằng tiêu chuẩn được viết theo cách này: để bạn ngăn mọi người sử dụng JPEG tiến bộ, JPEG-XR và/hoặc JPEG 2000, phải không? – malat

+0

Tôi không nói tiêu chuẩn ngăn bạn sử dụng hình ảnh tiến bộ, tôi cho rằng nó không cho phép trình kết xuất ngừng tải xuống hình ảnh dựa trên một số quyết định trực quan tùy ý về "đủ". Nếu bạn yêu cầu nó, bạn có thể sẽ phải cung cấp một trường hợp sử dụng thuyết phục hơn. Câu hỏi của bạn là "khi nào trình duyệt được phép ngừng tải xuống hình ảnh?", Câu trả lời là "Khi bạn rời/hủy trang". Phần còn lại của bạn hỏi về cơ bản là một đề nghị mà tôi rất nghi ngờ sẽ không bao giờ được chấp nhận như bạn đã đặt nó. – SpliFF

Các vấn đề liên quan