2013-09-16 4 views
2

저는 img 요소를 사용하고 데이터 URL을 반환하는 함수가 있습니다. 이것은 7/10 시간처럼 작동하고 공백 이미지를 3/10 회 반환합니다. 내 브라우저 (크롬)를 통해 만들어진 데이터 URL을보고 동일한 이미지를 사용하므로이 함수가 깨진 이미지를 반환한다는 것을 알고 있습니다. 누구나 그 이유를 알아낼 수 있습니까?데이터 URL에 캔버스가 제대로 작동하지 않습니다.

이 예제는 대부분 작동하지만 이미지 대신 큰 흰색 직사각형으로 끝나는 경우가 있습니다.

+0

참고. 따라서 img.src가 other-domain이고 다른 도메인 이미지를 캔버스에 쓴다면 canvas.toDataURL은 실패합니다. – markE

+0

CORS를 사용하여 문제의 도메인에서 이미지를 읽을 수 있도록 설정했습니다. – user2073343

+0

그냥 호기심 ... 왜 캔버스를 통해 img를 실행하고 있습니까? .src = 'https : //somedomain.s3.amazonaws.com/someimg.png' – markE

답변

2

기능을 사용하여을 그리기 전에 이미지가로드 될 때까지 기다려야합니다. 브라우저로 이미지를로드 한 후에 만 ​​imgToDataURL 기능을 호출 할 수 있습니다. 이 같은

뭔가 : 보안상의 이유로, 캔버스 소스 이미지를 제공하는 것 페이지와 같은 도메인에서 호스팅해야한다는

var image_sources = ["img1.png", "img2.png", "..."]; 

for(var i=0; i<image_sources.length; i++) { 
    var new_img = document.createElement("img"); 
    new_img.onload = function() { 
     imgToDataURL(this); 
    }; 
    new_img.src = image_sources[i]; 
} 
+0

이것이 문제 였으면 좋겠다.하지만 이미이 작업을하고 있습니다. imgToDataURL은 항상로드 된 이미지와 함께 호출됩니다. – user2073343

+0

@ user2073343 문제를 설명하는 jsfiddle을 만들 수 있습니까? 이 경우 – letiagoalves

+0

@user2073343으로 게시 한 코드에 아무런 문제가 없으며 문제의 실제 작동 예제를 제공 할 수 있습니까? 위의 내용은 imgToDataUrl이 호출되는 시점/방법을 알 수 없기 때문에 분명히 불완전합니다. – Matt

관련 문제