2012-05-10 88 views
1

我很努力在画布上绘制图像。 我到目前为止所做的是我已经从Canvas中插入图像数据到数据库中。 问题是,当我尝试创建数据的图像并稍后在画布上绘制它时,它不会绘制相同的图像,只有一些像素可能会被绘制,而其余的只是空白,就像没有绘制任何图像。Base64 PNG到画布

我得到的图像数据是这样的:

var CanvasData = document.getElementById('canvas'); 
CanvasData = CanvasData.toDataURL("image/png"); 

而绘制的图像,回到这样的画布(将数据存储在数据库中):

var result = xmlhttp.responseText; 
var CanvasDraw = document.getElementById('canvas'); 
var ctxChange = CanvasDraw.getContext('2d');   

imagedata = new Image(); 
imagedata.src = result; 
imagedata.onload = function(){ 
    ctxChange.drawImage(imagedata, 0, 0); 
} 

这里有一个链接到pastebin作为imagedata的示例:http://pastebin.com/XGmV49k9 结果是从AJAX调用返回的数据,与数据库中存储的数据相同。

感谢您的任何帮助。

回答

2

似乎在此行中的错误:

imagedata.src = result; 

应该是:

imagedata.src = CanvasData; 
+0

感谢您的答复。对不起,忘了添加那部分代码。结果是存储在数据库中的实际字符串,它是从AJAX调用接收的。因此,这是图像数据。 – Araw

+0

似乎在base64图像中出现错误。尝试将其粘贴到浏览器地址栏中。它失败。但是,如果你尝试从http://en.wikipedia.org/wiki/Data_URI_scheme插入数据,它会显示图像 – antyrat

+0

是的,当我使用你发布的网址上的数据时,它工作,在左上角画一个红点是对的)。当我在我的代码中使用它时,没有看到toDataURL出了什么问题:S – Araw