如何在asp.net中刷新图像?

时间:2013-03-08 20:19:40

标签: c# asp.net

我正在尝试创建一个基于ASP.Net的网站。我不知道如何刷新图像。我正在尝试建立一个到IP摄像头的网站链接。我知道相机的来源,而且我也拥有IP相机的授权。有没有人有任何想法这样做?

谢谢 麦

2 个答案:

答案 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,并以这种方式更新您的图像。