我的目标是从一系列 png 图像中创建一个 imageData 数组。
为了做到这一点,我使用 for 循环遍历图像,将它们放在画布中,然后检索创建的 imageData 并将其存储在一个数组中。
问题是图像没有足够的时间加载到画布中。我现在的解决方案是让计时器留出足够的时间,但这太可怕了。
我似乎找不到任何解决这个问题的方法。有没有办法为画布提供“onload”功能?
for(var i=1;i<50;i++){
(function(i){
setTimeout(function(){
return function(){
var newpath = path+i+".png"; //path to the image
baliseimg.onload = function(){ //baliseimg : html image tag
ctxt.drawImage(baliseimg,0,0);
ctxt.fillText(i, 50, 50); //just to stamp the image number on the imagedata
imgs[i-1]=ctxt.getImageData(0,0,512,512);
}
baliseimg.src=newpath;
}();
},100*i); //100ms works, limit seems to be at 40
}(i));
}
感谢您的时间。