Я пытаюсь вывести значения пикселей из изображения. Изображение загружается правильно; другой ответ здесь предложил, чтобы browswer пытался прочитать пиксели до того, как изображение закончит загрузку, но я вижу, что он загружен к моменту срабатывания alert().getImageData() возвращает все нули
function initContext(canvasID, contextType)
{
var canvas = document.getElementById(canvasID);
var context = canvas.getContext(contextType);
return context;
}
function loadImage(imageSource, context)
{
var imageObj = new Image();
imageObj.onload = function()
{
context.drawImage(imageObj, 0, 0);
};
imageObj.src = imageSource;
return imageObj;
}
function readImage(imageData)
{
console.log();
console.log(imageData.data[0]);
}
var context = initContext('canvas','2d');
var imageObj = loadImage('images/color-test.png',context);
var imageData = context.getImageData(0,0,10,10);
alert();
readImage(imageData);
«загружается во время предупреждения() срабатывает» не означает «нагруженное время' getImageData() 'называется» –
я переместил предупреждение() к перед getImageData() вызова (Спасибо, Павел!) и теперь это работает. Поэтому мне нужно больше времени на загрузку, я думаю - только принятый ответ [здесь] (http://stackoverflow.com/questions/5694599/getimagedata-always-returning-0) говорит, что для использования этой функции используется функция onload, и это то, что у меня было. Я не уверен, почему он не работает. – zzxjoanw
Вы вызываете 'onload', но не дожидаетесь его запуска. Лучше всего вызывать 'getImageData()' и 'readImage()' * из * обработчика 'onload', чтобы быть уверенным, что это сделано. В противном случае вы обречены после удаления «alert()». –