【发布时间】:2026-02-16 12:50:02
【问题描述】:
我遇到了一个问题,即连接速度较慢的用户无法正确获取我的图片。
我使用 Ajax 计时器每秒将新图像发送到 Ajax 更新面板内的图片框。
因此,如果他们的连接速度真的很慢,则在下一张图片进入之前,一张图片不会完全加载,因此他们永远无法获得完整的图片...
有什么想法吗?
【问题讨论】:
标签: c# image video-streaming webcam
我遇到了一个问题,即连接速度较慢的用户无法正确获取我的图片。
我使用 Ajax 计时器每秒将新图像发送到 Ajax 更新面板内的图片框。
因此,如果他们的连接速度真的很慢,则在下一张图片进入之前,一张图片不会完全加载,因此他们永远无法获得完整的图片...
有什么想法吗?
【问题讨论】:
标签: c# image video-streaming webcam
在 JavaScript 中使用图像 OnLoad 事件。换句话说,在最后一张图片未完全加载之前不要加载新图片。
您可能不应该使用更新面板。图像标签(包括其大小、外观和位置)保持不变;它是改变的来源。我建议不要更新所有内容,而是在客户端:
OnLoad 事件的侦听器添加到客户端的<img />。Camera.aspx,它提供从相机抓取的最新图片。为确保页面确实被查询,请将<img /> 元素的src 属性更改为Camera.aspx?t=1、Camera.aspx?t=2 等。在服务器端(所以这里没有 JavaScript),抓取的图像存储在数据库中,所以Camera.aspx 将查询最后存储的记录,检索它并直接发送到客户端(指定适当的Response.ContentType 并使用Response.OutputStream)。
为了获得更好的视觉响应,您可能还需要考虑并行使用两个图像元素:当第一个加载时,显示第二个,反之亦然。 可能会更好,但我不确定,所以在选择合适的方法之前进行测试。
【讨论】:
<img src="Camera.aspx" alt="..." />。
this.Response.OutputStream获取Camera.aspx的流,然后直接通过写入这个输出流来流式传输内容。不要忘记将this.Response.BufferOutput 设置为false。