, 대한 기존 캔버스 context.getImageData()
를 사용하여 이미지 (이미 웹 페이지에로드), 페이지에 표시되지 않은 두 번째 캔버스를 포함하는 (이미지 데이터를 받아야 다음 함수.캔버스에서 이미지 데이터를 가져올 수 없습니다
첫 번째 캔버스의 데이터가 예상대로 "획득"되고 alert(data1.data.length)
이 합리적인 숫자로 팝업되지만 두 번째 캔버스의 데이터가 "얻은"데이터가 아니며 함수가 alert(data2.data.length);
행보다 먼저 나옵니다. 그 모든 기능에서 작동하지 않는 것, 그리고 내 문제입니다. 내 문제입니다. 내 문제는 내 문제입니다.
function operateImage(){
var operand = new Image();
var data1, data2;
//exisiting canvas
var c =document.getElementById("edit_canvas");
var ctx=c.getContext("2d");
var operation = document.getElementById("operation").value;
//make a new temporary canvas and store the input image
var hiddenCanvas = document.createElement('canvas');
var hiddenCtx = hiddenCanvas.getContext('2d');
operand.src = document.getElementById("operation_image").value;
hiddenCanvas.width = operand.width;
hiddenCanvas.height = operand.height;
hiddenCtx.drawImage(operand,0,0);
//get image data objects from both canvases
data1 = ctx.getImageData(0,0,c.width,c.height);
alert(data1.data.length);
data2 = hiddenCtx.getImageData(0,0,hiddenCanvas.width,hiddenCanvas.height);
alert(data2.data.length);
/*pass the two image data objects to another function for processing*/
}
A 기능은 작동 값에 따라 다른 기능으로 이미지 데이터를 전달합니다. (AND, OR, XOR 또는 픽셀 데이터 배열의 내용을 함께 나타내지는 않습니다)
편집 : 다음과 같은 오류 메시지가 표시됩니다. "CanEnce SecurityError : 'CanvasRenderingContext2D'에서 'getImageData'를 실행하지 못했습니다. 캔버스는 교차 출처 데이터에 의해 오염되었습니다. "
어떤 오류가 발생했는지 알면 매우 도움이 될 것입니다 ... 콘솔은 무엇을 말합니까? 나는 이것이 교차 기원 이슈라고 의심한다. – Gio
아, 메모장을 사용하면서 오류를 깜빡했다. ++. Chrome 개발자 콘솔에 "Uncaught SecurityError : 'CanvasRenderingContext2D'에 'getImageData'를 실행하지 못했습니다. 캔버스가 교차 원천 데이터로 오염되었습니다." –