这似乎是一个长期存在的问题,我认为很多人都想一劳永逸地彻底解决这个问题。
问题存在于链条中
image = new Image();
image.src = imagePath;
然后暂停等待 image.complete 类似...
while(HHGimg.height == 0)
或者
while(!image.complete)
{
setTimeout(function(){ foo },100);
}
其次是 canvas to base64 方法。
var canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
var canvasContext = canvas.getContext('2d');
canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
imageData = canvas.toDataURL('image/jpeg');
问题是暂停以确保 image.complete 完成其工作并将有效对象传递到画布。
需要一种方法来确保暂停足以完成,而不会以停止脚本的循环结束(这个“while”方法似乎是这样)
关于如何在继续之前等待有效图像的任何想法......
我的整个功能如下...
<script type="text/javascript">
function imageFetch(imgpath, imgname)
{
imgdata = "";
image = new Image();
image.src = imgpath + imgname;;
while(image.height == 0)
{
setTimeout(function(){imgdata = "";},100);
}
var canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
var canvasContext = canvas.getContext('2d');
canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
imgdata = canvas.toDataURL('image/jpeg');
return imgdata;
}
</script>
...但在暂停以确保图像完全加载之前,一些返回只是“数据:”
现在交给你了。关于如何击败这个的任何想法?