JavaScript: правильный способ загрузки изображения на холст для getImageData?

Я написал простой безбиблиотечный ротозумер для html5-canvas, и мне интересно, как правильно загрузить изображение на холст перед использованием getImageData?

var hc = document.getElementById("hiddenCanvas"); var hctx = hc.getContext("2d"); // Hidden canvas for imageload (hctx)
var imageObj = new Image(); imageObj.onload = function() { hctx.drawImage(this, 0, 0); }; imageObj.src = 'img/8.jpg';

alert("Click to start");
// This alert needs to be replaced with "hold-the-script-until-image-is-fully-loaded" or the image_data will be nothing but black.

var image_data = hctx.getImageData(0,0,1000,1000);
var rgba_byte_array = image_data.data; // image_data.data.length = 4000000
var loop = setInterval(loop,1000/30);

function loop()
{ ...

Код работает с предупреждением, поскольку вызывает необходимый "разрыв" при загрузке изображения. Я не хочу использовать ни JQuery, ни Ajax.

Здесь я использую imageObj.onload прямо при рисовании на холсте. Наверное, не правильный путь? Заранее спасибо за отзыв и решение.

1 ответ

Решение

Вы должны положить

var image_data = hctx.getImageData(0,0,1000,1000);
var rgba_byte_array = image_data.data; // image_data.data.length = 4000000
var loop = setInterval(loop,1000/30);

внутри imageObj.onload функция

Другие вопросы по тегам