2012-11-01 28 views
5

Tôi có một camera Axis có nhiều đầu ra, một trong số đó là hình ảnh jpg. Hình ảnh này vẫn được chụp từ máy ảnh tại thời điểm bạn tải nó lên. Tôi muốn thực hiện một cách cho hình ảnh để tải lại (mỗi 30 giây) mà không cần phải tải lại toàn bộ trang, tuy nhiên, tôi muốn cho mã để tải xuống đầy đủ hình ảnh trước khi cập nhật nó để tránh có một màn hình trống.Làm mới nguồn cấp dữ liệu hình ảnh với jQuery/ajax

Tôi đã đọc xung quanh và điều gần nhất tôi thấy là bài đăng này Using AJAX/jQuery to refresh an image nhưng sự khác biệt là nguồn cấp dữ liệu hình ảnh tôi có đến từ chính máy ảnh thực không phải là tệp php. Tôi đã thử một vài cách để làm việc này với url của tôi nhưng tôi đã thất bại do thiếu kiến ​​thức về javascript.

Mã Tôi đang sử dụng ngay bây giờ để kéo lên hình ảnh chỉ là một thẻ hình ảnh đơn giản ...

<img src="[camera ip]/jpg/1/image.jpg">

và bất cứ lúc nào bạn làm mới cửa sổ trình duyệt nó mang lại cho bạn một bản chụp của luồng video hiện tại.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Kính trọng,
Javier

+0

ok, bạn có thể đưa ra một ví dụ? hiện nó tải một hình ảnh khác nhau mỗi 30 giây? giải thích cách bạn muốn mã trông giống như – Ibu

+0

Định dạng của tất cả hình ảnh bạn sẽ kéo vào là gì? Liệu máy ảnh chỉ tiếp tục cập nhật cùng một image.jpg? –

+0

Nguồn cấp dữ liệu hình ảnh không bao giờ thay đổi, nó luôn là url giống như tôi đã cung cấp trong bài đăng gốc và nó cung cấp cho bạn một hình ảnh mới bất cứ lúc nào bạn làm mới trình duyệt nhưng tôi đã quyết định chỉ giữ lại 30 giây. Đây không phải là hình ảnh ngẫu nhiên mà nó đang cung cấp, nó chỉ là ảnh chụp nhanh về những gì máy ảnh hiện đang phát trực tuyến. – Javier

Trả lời

2

tôi không thể tìm thấy một webcam trực tuyến với một hình ảnh mới mẻ để thử nghiệm chống lại điều này, nhưng tôi nghĩ rằng đây nên để các trick cho bạn ... hoặc ít nhất giúp bạn có thực sự gần gũi ...

<script> 
// URL to your cam image 
var cam_image = 'http://absdev.ws:8000/jpg/1/image.jpg'; 

var buffer = {}; 
function preload() { 
    buffer = new Image(); 
    // attaching the seconds breaks cache 
    buffer.src = cam_image + '?' + (new Date()).getTime(); 
    buffer.onload = function() { 
     setTimeout(preload, 30000); // 30 seconds refresh 
     document.getElementById('myimg').src = buffer.src; 
    } 
} 
preload(); 
</script> 
+0

Tôi đang cố gắng ghép chúng lại với nhau từ kiến ​​thức javascript nhỏ mà tôi có và nó có ý nghĩa, đó là thực tế là gần nhất tôi đã làm cho nó hoạt động.Hình ảnh kéo lên và trình duyệt tải hình ảnh mới với dấu thời gian, tuy nhiên, nó không bao giờ được tải lại. Đây là một nguồn cấp dữ liệu hình ảnh mẫu có thể được sử dụng để kiểm tra ví dụ này http://absdev.ws:8000/jpg/1/image.jpg – Javier

+0

Tôi đã có một vài lỗi nhỏ trong mã mà tôi đã viết trước đây. Tôi đã chỉnh sửa mã ở trên. Bạn sẽ thấy rằng nó hoạt động ngay bây giờ. –

+0

Hoạt động đẹp, cảm ơn bạn! – Javier

0

Nếu bạn đang làm việc với một nhóm tĩnh của hình ảnh - bạn đã biết tên tập tin và nó sẽ không thay đổi - bạn sẽ nạp tất cả mọi thứ vào html của bạn ban đầu (mà giải quyết được màn hình trống mối quan tâm), sau đó sử dụng một plugin jquery để xoay/làm mới các hình ảnh ở khoảng thời gian bạn chỉ định, có thể là 30 giây hoặc bất cứ điều gì.

Vì vậy, html của bạn sẽ trông như thế này:

<ul> 
    <li><img src="[camera ip]/jpg/1/image.jpg"></li> 
    <li><img src="[camera ip]/jpg/2/image.jpg"></li> 
    <li><img src="[camera ip]/jpg/3/image.jpg"></li> 
    ... 
</ul> 

Và sau đó các plugin sẽ lướt qua chúng.

Đối với plugins, sử dụng một trong hai:

http://nivo.dev7studios.com/

http://jquery.malsup.com/cycle/

Chúc may mắn!

+0

Brett, địa chỉ của nguồn cấp dữ liệu hình ảnh không bao giờ thay đổi. Plugin chu trình có một số chức năng mà tôi đang tìm kiếm nhưng tôi nghĩ rằng các tập lệnh đó quá nặng đối với những gì tôi đang cố gắng hoàn thành. – Javier

+0

mà không có kiến ​​thức về javascript rộng rãi, bạn sẽ phải sử dụng jQuery với một plugin – Brett

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