Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载图像前的toDataUrl触发器_Javascript_Html_Canvas - Fatal编程技术网

Javascript 加载图像前的toDataUrl触发器

Javascript 加载图像前的toDataUrl触发器,javascript,html,canvas,Javascript,Html,Canvas,我正在尝试创建画布绘图,但当我使用toDataUrl时,它返回空的画布文件 var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var img = new Image(); img.addEventListener("load", function() { ctx.drawImage(img, 0, 0, 800, 420); }, false); img.src = "i

我正在尝试创建画布绘图,但当我使用toDataUrl时,它返回空的画布文件

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img, 0, 0, 800, 420);
}, false);
img.src = "images/quizes/sim.png";

var img1 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img1, 0, 0, 320, 320);
}, false);
ctx.drawImage(img1, 0, 0, 320, 320);
img1.src = "images/users/alfred.jpg";

var img2 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img2, 480, 0, 320, 320);
}, false);
img2.src = "images/users/brynjar.jpg";

var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "script.php",
    data: {
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved');
});
这可能是因为toDataUrl在加载图像之前已触发,因此如何更改它,使我尝试加载的图像成为画布文件的一部分。

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img, 0, 0, 800, 420);
}, false);
img.src = "images/quizes/sim.png";

var img1 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img1, 0, 0, 320, 320);
}, false);
ctx.drawImage(img1, 0, 0, 320, 320);
img1.src = "images/users/alfred.jpg";

var img2 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img2, 480, 0, 320, 320);
}, false);
img2.src = "images/users/brynjar.jpg";

var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "script.php",
    data: {
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved');
});
使用承诺(大多数IE不支持)

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img, 0, 0, 800, 420);
}, false);
img.src = "images/quizes/sim.png";

var img1 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img1, 0, 0, 320, 320);
}, false);
ctx.drawImage(img1, 0, 0, 320, 320);
img1.src = "images/users/alfred.jpg";

var img2 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img2, 480, 0, 320, 320);
}, false);
img2.src = "images/users/brynjar.jpg";

var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "script.php",
    data: {
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved');
});
如果您需要IE,有一些Pollyfill可以重新创建支持。另一种选择是使用计数器

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img, 0, 0, 800, 420);
}, false);
img.src = "images/quizes/sim.png";

var img1 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img1, 0, 0, 320, 320);
}, false);
ctx.drawImage(img1, 0, 0, 320, 320);
img1.src = "images/users/alfred.jpg";

var img2 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img2, 480, 0, 320, 320);
}, false);
img2.src = "images/users/brynjar.jpg";

var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "script.php",
    data: {
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved');
});
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

function loadImage(image, x, y, width, height) {

  var img = new Image();
  img.onload = function() {
    ctx.drawImage(img, x, y, width, height);
    count++;
    if (count === totalCount) {
      allLoaded();
    }
  };
  img.onerror = function() {
    alert("You have a problem");
  };
  img.src = image;
  if (img.complete) img.onload();

}


function allLoaded() {
  var dataURL = canvas.toDataURL();

  $.ajax({
    type: "POST",
    url: "script.php",
    data: {
      imgBase64: dataURL
    }
  }).done(function(o) {
    console.log('saved');
  });
}

var count = 0;
var totalCount = 3;
var img1 = loadImage("images/quizes/sim.png", 0, 0, 800, 420);
var img2 = loadImage("images/users/alfred.jpg", 0, 0, 320, 320);
var img3 = loadImage("images/users/brynjar.jpg", 480, 0, 320, 320);
使用承诺(大多数IE不支持)

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img, 0, 0, 800, 420);
}, false);
img.src = "images/quizes/sim.png";

var img1 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img1, 0, 0, 320, 320);
}, false);
ctx.drawImage(img1, 0, 0, 320, 320);
img1.src = "images/users/alfred.jpg";

var img2 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img2, 480, 0, 320, 320);
}, false);
img2.src = "images/users/brynjar.jpg";

var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "script.php",
    data: {
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved');
});
如果您需要IE,有一些Pollyfill可以重新创建支持。另一种选择是使用计数器

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

var img = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img, 0, 0, 800, 420);
}, false);
img.src = "images/quizes/sim.png";

var img1 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img1, 0, 0, 320, 320);
}, false);
ctx.drawImage(img1, 0, 0, 320, 320);
img1.src = "images/users/alfred.jpg";

var img2 = new Image();
img.addEventListener("load", function() {
    ctx.drawImage(img2, 480, 0, 320, 320);
}, false);
img2.src = "images/users/brynjar.jpg";

var dataURL = canvas.toDataURL();

$.ajax({
    type: "POST",
    url: "script.php",
    data: {
        imgBase64: dataURL
    }
}).done(function(o) {
    console.log('saved');
});
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

function loadImage(image, x, y, width, height) {

  var img = new Image();
  img.onload = function() {
    ctx.drawImage(img, x, y, width, height);
    count++;
    if (count === totalCount) {
      allLoaded();
    }
  };
  img.onerror = function() {
    alert("You have a problem");
  };
  img.src = image;
  if (img.complete) img.onload();

}


function allLoaded() {
  var dataURL = canvas.toDataURL();

  $.ajax({
    type: "POST",
    url: "script.php",
    data: {
      imgBase64: dataURL
    }
  }).done(function(o) {
    console.log('saved');
  });
}

var count = 0;
var totalCount = 3;
var img1 = loadImage("images/quizes/sim.png", 0, 0, 800, 420);
var img2 = loadImage("images/users/alfred.jpg", 0, 0, 320, 320);
var img3 = loadImage("images/users/brynjar.jpg", 480, 0, 320, 320);

您需要等待所有图像加载。或者使用计数器。图像加载,向上计数器,查看是否全部加载。如果是,请致电下一步或查看承诺。您是否理解@epascarello的评论?您需要等待所有图像加载。或者使用计数器。图像加载,向上计数器,查看是否全部加载。如果是,请致电下一步或查看承诺。您是否理解@epascarello的评论?