2015-04-27 75 views
0

我正在使用toDataURL()來獲取base64圖像。toDataURL返回大量「A」的錯誤值

所以在我的js我這樣做:

var canvas = document.createElement ('CANVAS'); 
canvas.width = editImages.imgMgrObj.IMreal[0]; 
canvas.height = editImages.imgMgrObj.IMreal[1]; 
var context = canvas.getContext ('2d'); 
context.drawImage (editImages.imgMgrObj.getIMG (), 0, 0); 

然後我做一個AJAX POST請求:IMG = '+ canvas.toDataURL( 「圖像/ PNG」)' 作爲參數,以節省數據庫中的圖像。
editImages是對圖像進行某些操作的文件。
editImages.imgMgrObj.getIMG ()給出圖像的鏈接。

問題是,這個功能讓我錯的base64有很多A在我的字符串,像這樣:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7YAAAIWCAYAAABjkRHCAAAHxklEQVR4nO3BMQEAAADCoPVPbQZ/oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

但這個錯誤很少發生,在Firefox 36我沒有這個錯誤,它只會出現在最後一個版本的firefox 37.0.2並且只在windows上不在Linux上,任何人都知道爲什麼?

回答

2

聽起來好像您的圖像沒有完全加載,當您撥打ctx.drawImage()
這就是爲什麼你得到所有這些A

的解決方法是調用上的圖像的負載帆布功能:

var img = new Image(); 
img.onload= function(){ 
    ctx.drawImage(img, 0,0); 
    var data = canvas.toDataURL(); 
    } 
img.src="path/to/your.image"; 
} 
+0

這是確定的問題是解決了,問題是好,我試圖讓toDataURL()我的圖像加載thabks這麼多前你幫忙 ! – simon