2016-06-18 4 views
0

결과 이미지에 두 이미지를 결합하고 결합 된 데이터를 캔버스 요소에 표시하는 코드를 작성하려고합니다. 내 로컬 컴퓨터의 페이지에 두 개의 이미지가로드되었습니다. 그런 다음 두 개의 새로운 캔버스 요소를 만들어 이러한 이미지를 그리면 해당 요소의 데이터를 결합하여 페이지 자체의 캔바스로 가져옵니다. SecurityError: The operation is insecure. using Htmlcanvas 나는 여기에 SO에 대한 몇 가지 질문을 살펴 보았다getImageData : 작업이 로컬 컴퓨터에서 안전하지 않습니다.

SecurityError: The operation is insecure.

, 등,하지만 모든 것이 내 로컬에있을 때 이런 일이 왜 볼 수 없습니다 :

그러나, 나는이 오류를 얻고있다 기계. 내가 알고있는 CORS 요청이 없습니다. 이런 일이 어떻게를 해결하는 이유에

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Image Mix Test</title> 
     <meta charset="UTF-8"> 
     <script> 
      function init(event) { 
       console.log('init'); 
       var img1 = document.getElementById('img1'); 
       var img2 = document.getElementById('img2'); 
       var canvas1 = document.createElement('canvas'); 
       var canvas2 = document.createElement('canvas'); 
       canvas1.width = img1.width; 
       canvas1.height = img1.height; 
       canvas2.width = img2.width; 
       canvas2.height = img2.height; 
       var ctx1 = canvas1.getContext('2d'); 
       var ctx2 = canvas2.getContext('2d'); 
       ctx1.drawImage(img1, 0, 0, ctx1.canvas.width, ctx1.canvas.height); 
       ctx2.drawImage(img2, 0, 0, ctx2.canvas.width, ctx2.canvas.height); 
       console.log(ctx1); 
       console.log(ctx2); 

       // *** The error is thrown on this next line... *** 
       var data1 = ctx1.getImageData(0, 0, ctx1.canvas.width, ctx1.canvas.height); 
       var data2 = ctx2.getImageData(0, 0, ctx2.canvas.width, ctx2.canvas.height); 

       // TODO: write code that combines image data. 
      } 

      window.addEventListener('load', init, false); 
     </script> 
    </head> 
    <body> 
     <img id="img1" src="../default/assets/images/Tile01.jpg" style="display:block;"><br> 
     <img id="img2" src="../default/assets/images/Tile03.jpg" style="display:block;"><br> 
     <canvas id="canvas"></canvas> 
    </body> 
</html> 

어떤 생각 : 나는 예상대로

여기에 내 코드가 작동하지 않습니다이 지금까지입니까?

+0

로컬 ('file : //') URL은 모두 서로 상대적으로 안전하지 않은 것으로 간주됩니다. 'README.html' 파일들과 같은 물고기 같은 것들이 당신의 컴퓨터로부터 내용을 훔치는 것을 막기 위해서입니다. – Pointy

+1

일부 로컬 * 웹 서버 *를 사용하여 코드를 호스트하는 경우 문제가 해결됩니다. – Pointy

+1

http 프로토콜로 localhost에 있습니까? 아니면 file : // 프로토콜에 있습니까? –

답변

1

HTML 파일의 디렉토리 외부에서 참조하려는 이미지 파일을 복사하여이 문제를 해결할 수있었습니다. 이제 이미지 URL은 src="Tile01.jpg"src="Tile03.jpg"이됩니다.

위의 다른 디렉토리에서 이미지를 재사용하려고했는데 현재 레벨보다 아래에 있습니다. 분명히 이것은 파일을보기 위해 file : /// 프로토콜을 사용하기 때문에 이것이 분리 된 웹에서 나온 것이라고 생각합니다.