2012-05-10 13 views
1

Я борется с рисованием изображения на холсте. Что я сделал до сих пор, так это то, что я вставил imagedata из Canvas в базу данных. Проблема в том, что когда я пытаюсь создать образ данных и нарисовать его на Canvas, то он не будет рисовать то же самое, только некоторые пиксели могут быть выделены, а остальные просто пусты, так как ничто не должно быть там.Base64 png to Canvas

Я получаю данные изображения, как это:

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

Да, это сработало, когда я использовал данные на указанном вами URL-адресе, нарисовал красную точку в левом углу (которая верно). Не видите, что не так с toDataURL, когда я использую его в своем коде: S – Araw