2012-05-10 122 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