2011-08-02 4 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); 

です。ページがロードされたときに自動的にajaxを呼び出す代わりに、ボタンを使用して手動でajax呼び出しをトリガーしましたが、同じ結果が得られます。 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

関連する問題