2011-08-02 5 views
0

처음 페이지를로드 할 때마다. 이미지는 복원되지 않지만 일단 페이지를로드하면 F5를 누릅니다. 그것은 작동합니다. 나는 내 코드가 어디서 잘못되었는지는 모르겠다.base64 문자열로 캔버스 복원

// variable r contains the base64 string which is retrieved via a ajax call. 

    var myImage = new Image(); 
    myImage.src = r; 
    var canvas = document.getElementById('myCanvas'); 
    var ctx = canvas.getContext('2d'); 
    ctx.drawImage(myImage, 0, 0); 

확인. 페이지가로드 될 때 자동으로 아약스를 호출하는 대신 버튼을 통해 수동으로 아약스 호출을 트리거했지만 여전히 동일한 결과를 얻습니다. base64 문자열이 성공적으로 검색되고 이미지가로드되지 않습니다. 하지만 두 번째 버튼을 클릭했을 때. 이미지가로드 된 것입니다.

+0

이미지가로드되는 데 시간이 걸립니다. 이미지가 이미 완전히로드 되었습니까? –

+0

나는 가정한다. ajax 호출은 document.ready 후에 호출되지만 alert()에 base64 문자열을 표시 할 수 있지만 이미지는로드되지 않습니다. – root

답변

2
var myImage = new Image(); 
myImage.src = r; 
var canvas = document.getElementById('myCanvas'); 
var ctx = canvas.getContext('2d'); 
// wait for it to load before calling draw 
myImage.onload = function() { 
    ctx.drawImage(myImage, 0, 0); 
} 
+0

나는 이것을 고쳤다 고 생각한다. – root