Javascript 在画布中,是否有一种方法可以告诉img.src何时完成加载?

Javascript 在画布中,是否有一种方法可以告诉img.src何时完成加载?,javascript,html,canvas,Javascript,Html,Canvas,在向画布添加图像后,我尝试将画布转换为dataURL。我遇到的问题是在将图像加载到画布之前创建dataURL。有没有办法知道图像何时加载完毕 var myCanvas = document.getElementById('canvas'); var ctx = myCanvas.getContext('2d'); var img = new Image; img.onload = function(){ ctx.

在向画布添加图像后,我尝试将画布转换为dataURL。我遇到的问题是在将图像加载到画布之前创建dataURL。有没有办法知道图像何时加载完毕

        var myCanvas = document.getElementById('canvas');
        var ctx = myCanvas.getContext('2d');
        var img = new Image;
        img.onload = function(){
          ctx.drawImage(img,0,0);
        };
        img.src = URL;

您已经在使用
img.onload
处理程序,该处理程序在图像加载完成后运行。由于
ctx.drawImage
是同步的,因此保证在执行下一行代码之前在画布上渲染图像

因此,您只需在
onload
回调中运行
myCanvas.toDataURL()
,然后在
drawImage
之后,您将获得包含图像的画布的Base64,如下所示:

img.onload = function(){
  ctx.drawImage(img,0,0);
  document.getElementById("imgURL").value = myCanvas.toDataURL();
}

您已经在使用
img.onload
处理程序,该处理程序在图像加载完成后运行。由于
ctx.drawImage
是同步的,因此保证在执行下一行代码之前在画布上渲染图像

因此,您只需在
onload
回调中运行
myCanvas.toDataURL()
,然后在
drawImage
之后,您将获得包含图像的画布的Base64,如下所示:

img.onload = function(){
  ctx.drawImage(img,0,0);
  document.getElementById("imgURL").value = myCanvas.toDataURL();
}

是的,您已经在使用它:
img.onload
。所以只需从回调中执行您的工作。是的,您已经在使用它:
img.onload
。所以只要在回调中完成你的工作。