Я пытаюсь инвертировать цвет изображения. Теперь изображение загружается нормально, но когда я пытаюсь вызвать getImageData и putImageData обратно на холст. Холст просто пуст. Затем я распечатал все imageData, похоже, что он всегда 0 по какой-то причине. Я серьезно обеспокоен этим. Пожалуйста, помогите и THX заранее!Canvas Получить изображение Данные, возвращаемые 0 всегда
window.onload = function() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var img = new Image();
img.src = "hand.jpg";
img.onload = function() {
ctx.drawImage(img, 10, 10,50,50);
}
var imgData = ctx.getImageData(10,10,50,50);
console.log(imgData.data.toString()); //return 0's
for (var i=0;i<imgData.data.length;i+=4)
{
imgData.data[i]=255-imgData.data[i];
imgData.data[i+1]=255-imgData.data[i+1];
imgData.data[i+2]=255-imgData.data[i+2];
imgData.data[i+3]=255;
}
ctx.putImageData(imgData,100,100);
}
Большое вам спасибо! Я бы этого не ожидал. Теперь у меня есть другой вопрос. Я скопировал ваш код, и он говорит (холст испорчен данными перекрестного происхождения). Я знаю, что это обычная проблема, но все ответы на stackoverflow не относятся ко мне. Я только запускаю это на своем локальном –
@UniSoundWaterloo. Если вы работаете на localhost, убедитесь, что изображение тоже происходит из того же самого. Вы не можете использовать изображение, если оно поступает из хранилища файлов. – Blindman67
Человек, вы потрясающий! –