我有一个可以“模拟”实时视频的asp.net应用程序。我从mysql数据库中获取了多张图片。
问题是如何在网页上显示。我每张照片刷新页面1秒,结果是图片不连贯和闪烁。
Response.AppendHeader("Refresh", "1")
如何以每秒4次的速度刷新页面?或是否有任何实施以大陆方式显示。
如果你愿意回复我真的很感激。美好的一天(^ _ ^)......
这是我用来从数据库中读取图像的脚本。
如果dr.Read那么 dr.Read() Response.ContentType =“image / jpeg”'获取或设置输出流的类型 Response.BinaryWrite(dr.Item(“file”))'将二进制字符流写入 http输出流 其他 Response.Write(“当前没有活动的网络广播。”) 万一 dr.Close()
答案 0 :(得分:3)
create a javascript method to change the image using xmlhttpobject and recursively set a timer
function Timer() {
setTimeout("getImage(['imageContainer1'])", 200);
t = setTimeout("Timer()", 100);
}
function getImage(params) {
var request=getXMLhttpObject();
makeRequest("ajax/ObtainImage.aspx?name='myimage'+param[1]+'.jpg",request, imageResponseHandler(request, params));
}
function getXMLhttpObject() {
return (navigator.appName == "Microsoft Internet Explorer")? new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();
}
function makeRequest(url,request, Handler) {
request.open("GET", url, true);
request.onreadystatechange = Handler;
request.send(null);
}
function imageResponseHandler(request,params) {
return function() {
if (request.readyState == 4)
document.getElementById(params[0]).src = request.responseText;
}
}
答案 1 :(得分:1)
我要么使用一些Javascript / Ajax来更改内容或元刷新(对于快速刷新来说,这不是最好的)。
答案 2 :(得分:1)
也许你需要考虑在页面上加载多张图片并使用javascript在它们之间循环。您可以使用AJAX获取图片,而不是刷新页面。
答案 3 :(得分:1)
如果您真的想要模拟视频,则需要每秒至少显示15张图片(15fps)。每秒发出那么多请求并不是一个好主意。
如果你绝对必须这样做,我建议先显示“缓冲”图片,然后再显示它们,如果可能的话,分批取出:
buffer = [] // cache loaded images
bufferSize = 30 // load 30 images before playing
function loadImage(src) {
var img = new Image()
img.src = src
buffer.push(img)
}
function animate(target) {
if (buffer.length > 0) {
var img = buffer.shift()
document.getElementById(target).src = img.src
}
}
function bufferImages() {
for (var i=0; i<bufferSize; i++) {
loadImage('/ajax/ObtainImage.aspx?name=img')
}
}
setInterval("animate('imgTarget')", 65) // should give us about 15fps
setInterval("bufferImages()", 1000) // every second
答案 4 :(得分:0)
将此添加到html文档的头部。 不是最有效的方式,但它会起作用。
<meta http-equiv="refresh" content=".25" />