【问题标题】:How to refresh image in asp.net?如何在asp.net中刷新图像?
【发布时间】:2013-03-08 20:19:40
【问题描述】:

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

谢谢 吉米

【问题讨论】:

  • 您是说您希望您的 asp.net 应用程序访问连接的摄像头吗?
  • 这取决于相机。他们中的大多数都有一个可公开访问的指向您可以使用的视频流的链接。
  • 我认为他在问如何通过他可以访问的相机在网站上显示实时视频。这是正确的吗?
  • 是的,安东尼。这就是我想说的。
  • 就像我说的,这取决于相机。他们中的大多数人都有一个视频流地址,您可以简单地在您的网页中使用该地址(尽管您必须将该地址公开给全世界)。见这里:github.com/ingenuitas/SimpleCV/wiki/…

标签: c# asp.net


【解决方案1】:

您可以使用简单的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;
        }
    }
}

在这里我想说,这不是实时视频的解决方案,而只是将网络摄像头的捕获显示到页面上,例如在互联网上制作实时网络摄像头来显示某些地方。对于实时视频和实时通信,您需要更复杂的代码,以及将 Adob​​e 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?

【讨论】:

    【解决方案2】:

    你会发现这篇文章很有帮助UpdatePanel Refresh。如果您不关心回发的闪烁,您还可以在 java-script 中创建一个计时器,并为每个滴答调用 __doPostBack('','');您还可以创建一个可以使用 jQuery 调用的 WebMethod 并以这种方式更新您的图像。

    【讨论】:

    • UpdatePanel 是错误的解决方案。它将执行整个页面生命周期,只是为了更新一张图片;这效率极低。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多