我正在尝试创建一个基于ASP.Net的网站。我不知道如何刷新图像。我正在尝试建立一个到IP摄像头的网站链接。我知道相机的来源,而且我也拥有IP相机的授权。有没有人有任何想法这样做?
谢谢 麦
答案 0 :(得分:2)
您可以使用简单的javascript
在页面上刷新它。
假设您的相机更新了相同的图片名称imagefromcamera.jpg
。然后你用简单的html或asp图像控件在你的页面上显示它,你用javascript更新它:
<img id="LiveImg" width="320" height="320" alt="" src="imagefromcamera.jpg?" />
<script>
var myImg = document.getElementById("LiveImg");
if (myImg){
window.setInterval(function(){
myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
}, 3000);
}
</script>
在图像末尾添加此随机数,我们确保不会保留在浏览器的缓存中。这里的计时器需要每隔几秒更新一次,比如这里3秒。
现在,如果您的相机使用不同的名称,您可以使用相同的想法并加载它们。如果您有其他方法从相机获取图像,您可以使用处理程序发送图像。这是一个类似的例子。我创建了一个名为captureimage.ashx
的处理程序,在javascript端使用相同的代码:
<img id="LiveImg" width="320" height="320" alt="" src="captureimage.ashx?" />
<script>
var myImg = document.getElementById("LiveImg");
if (myImg){
window.setInterval(function(){
myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
}, 3000);
}
</script>
在服务器端,处理程序可以是:
public class ReadTheCameraImage : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "image/jpeg";
context.Response.Buffer = false;
// read the ImageData from what ever source you have
context.Response.OutputStream.Write(ImageData, 0, ImageData.Length);
}
public bool IsReusable
{
get {
return false;
}
}
}
在这里,我想说,这不是实时视频的解决方案,而是仅用于将网络摄像头捕获到页面上,例如在互联网上制作显示某些地方的实时网络摄像头。对于实时视频和实时通信,您需要更复杂的代码,以及使用Adobe Flash播放器和服务器流,直接连接每个连接的客户端和其他东西。
视频的其他一些答案,以防您的相机软件支持直接视频流:
how to work with videos in ASP.NET?
How to play audio and video files in web browser?
how can i play vimeo player on image click?
答案 1 :(得分:0)
您会发现这篇文章很有用UpdatePanel Refresh。如果您不关心回发的闪烁,您还可以在java脚本中创建一个计时器,并为每个勾选调用__doPostBack('','');您还可以创建一个可以使用jQuery调用的WebMethod,并以这种方式更新您的图像。