2015-12-15 3 views
0

У меня возникли проблемы с загрузкой dataURL в мой холст из локального хранилища.Загрузка данныхURL из локального хранилища в HTML-холст

localStorage.getItem(canvasArea) 

Я сумел сохранить dataURL в локальном хранилище, и когда я console.log это я могу его увидеть:

local storage which save the canvas in a dataURL

мне удалось сохранить его, используя этот код:

document.getElementById("saveButton").addEventListener("click", function() 
{ 
    var canvas = document.getElementById("canvasArea"), 
    ctx = canvas.getContext("2d"); 

    localStorage.setItem(canvasArea, canvas.toDataURL()); 
}) 

Однако, когда я пытаюсь поместить этот dataURL, используя приведенный ниже код, он ничего не делает.

function loadCanvas(dataURL) { 

    var canvas = document.getElementById('canvasArea'); 
    var ctx = canvas.getContext('2d'); 


    var imageObj = new Image(); 
    imageObj.src = dataURL; 
    imageObj.onload = function() { 
     ctx.drawImage(this, 0, 0); 
    }; 
} 

var dataURL = localStorage.getItem(canvasArea); 
loadCanvas(dataURL); 

Я пропустил что-то очевидное или я глуп? Любая помощь будет оценена! Спасибо!

+0

'localStorage.getItem (canvasArea);' - этот код относится к неопределенной переменной 'canvasArea', которая забрасывается в пустую строку (' '' ') – hindmost

+0

Вероятно, вы должны использовать кавычки вокруг ключей, так как они должны быть строками? – adeneo

+0

@hindmost, фактически, поскольку '' canvasArea "' является 'id' элемента canvas OP,' canvasArea' не является неопределенным, но эквивалентно 'document.getElementById ('canvasArea') || document.getElementsByName ('canvasArea') [0]; 'который, после передачи в методы' setItem() 'и' getItem() ', будет преобразован в его нотацию строки:' "[object HTMLCanvasElement]" '. Таким образом, даже если это не то, что OP пытается сделать, это сработает ... Теперь, для реальной проблемы, я предполагаю, что в код OP есть некоторые другие странности, которые мы не видим здесь. – Kaiido

ответ

0

Сделайте console.log по телефону localStorage.getItem(canvasArea) и посмотрите, что именно он получает. У меня были такие странные проблемы, как раньше, когда он хотел loadCanvas(""+ dataURL); вместо loadCanvas(dataURL);

+0

Он вернулся: data: image/png; base64, iVBORw0KGgoAAAA и т. д., который при нажатии отображал изображение, которое я сохранил, зеленый – Hopeless

+0

В вашей функции loadCanvas , hardcode URL-адрес изображения вместо того, чтобы принимать его как параметр и посмотреть, работает ли он. Если это произойдет, вы узнаете, что есть проблема с URL-адресом, он будет сужать его –

+0

Я просто попробовал var imageObj = new Image(); imageObj.src = "http://i.imgur.com/nXjDbCM.jpg"; imageObj.onload = function() { ctx.drawImage (это 0, 0); }; но без изменений – Hopeless

Смежные вопросы