2015-04-27 38 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