html – 如何在不刷新闪烁的情况下在浏览器中显示不断变化的图像文件?

前端之家收集整理的这篇文章主要介绍了html – 如何在不刷新闪烁的情况下在浏览器中显示不断变化的图像文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用html在浏览器上显示一个图像(从一个文件)…我有另一个程序,不断拍摄我的屏幕截图,并将其存储为一个图像文件“image.jpeg”.我使用setTimeout定期在浏览器上显示此图像.但是图像在浏览器上没有变化

这是我的代码…我使用了一个Image对象,以便每次JavaScript函数运行时加载一个新的图像,但这似乎不起作用

<html>

<head>

<script type="text/JavaScript">

var x=0,y=0;
var canvas,context,img;

function timedRefresh(timeoutPeriod)
{
    canvas = document.getElementById("x");
    context = canvas.getContext("2d");
    img = new Image();
    img.src = "image.jpeg";
    context.drawImage(img,x,y);
    x+=20; y+=20;
    //img.destroy();
    setTimeout("timedRefresh(1000)",timeoutPeriod);
}

</script>

<title>JavaScript Refresh Example</title>

</head>

<body onload="JavaScript:timedRefresh(1000);">

<canvas id="x" width="600" height="600" />

</body>
</html>

解决方法

首先,当您设置图像对象的src属性时,图像尚未加载,当图像的加载被触发时(当图像完成加载)时,需要刷新画布.

其次,浏览器尝试使用缓存的image.jpeg图像.为了避免这种情况,请在图像URI中添加一个虚假参数.

例如 :

var timeoutPeriod = 1000;
var imageURI = 'image.jpeg';
var x=0,y=0;
var img = new Image();
img.onload = function() {
    var canvas = document.getElementById("x");
    var context = canvas.getContext("2d");

    context.drawImage(img,y);
    x+=20; y+=20;
    setTimeout(timedRefresh,timeoutPeriod);
};

function timedRefresh() {
    // just change src attribute,will always trigger the onload callback
    img.src = imageURI + '?d=' + Date.now();
}

然后它应该工作.

猜你在找的HTML相关文章