Я пытаюсь получить изображение из другого домена, который я настроил, чтобы разрешить CORS и манипулировать пикселями, а затем я хочу отобразить результат и иметь возможность манипулировать результатом. Я могу использовать как getImageData, так и toDataURL на изображении, которое я запросил, поэтому я знаю, что часть сервера работает. Однако, когда я пытаюсь изменить атрибут src изображения на dataURL с холста, я получаю сообщение об ошибке «Неверная загрузка изображения с помощью Cross-Origin».Javascript CORS image/canvas manipulation
function manipulateImage(img, func) {
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
c = canvas.getContext('2d');
c.drawImage(img, 0, 0);
width = canvas.width;
height = canvas.height;
imageData = c.getImageData(0, 0, width, height);
y = 0;
while (y < height) {
x = 0;
while (x < width) {
var pixel = getPixel(imageData, x, y);
func(pixel);
setPixel(imageData, x, y, pixel);
x++;
}
y++;
}
c.putImageData(imageData, 0, 0);
console.log('done');
img.src = canvas.toDataURL();
}
$(function() {
img = new Image();
img.crossOrigin = '';
img.onload = function() {
document.body.appendChild(img);
}
img.src = 'https://choros-cognition-test.s3.amazonaws.com/geotiffs/X8pEm_cl3_sm16_ra15_style_warp.png'
$('#increase-button').on('click', function() {
manipulateImage(img, function(pixel) {
pixel[2] += 30;
});
});
});
Странная часть что если сбросить атрибут crossOrigin изображения в нуль в функции manipulateImage, то он работает. Почему это?
function manipulateImage(img, func) {
img.crossOrigin = null;
....