2015-06-20 2 views
3

я с холстом, в котором я загрузить изображение со следующим кодом:canvas.toDataURL() не работает должным образом

function handleImage(e){ 
    var reader = new FileReader(); 
    reader.onload = function(event){ 
     var img = new Image(); 
     img.onload = function(){ 
      canvas.width = img.width; 
      canvas.height = img.height; 
      ctx.drawImage(img,0,0); 
     } 
     img.src = event.target.result; 
    } 
    reader.readAsDataURL(e.target.files[0]); 
} 

Теперь я хотел использовать canvas.toDataURL(), чтобы загрузить изображение на другой холст. Код:

var dataURL = canvas.toDataURL(); 
drawDataURIOnCanvas(dataURL,canvas2); 

    function drawDataURIOnCanvas(dataURL, name_of_canvas) { 

    var myCanvas = document.getElementById(name_of_canvas); 
    var img3 = new Image; 
    var ctx2 = myCanvas .getContext('2d'); 
    img3.onload = function(){ 
     ctx2.drawImage(img3,0,0); // Or at whatever offset you like 
    }; 
    img3.src = dataURL; 
} 

Если я задаю этому рабочий URL-адрес, все в порядке. Но полученный URL из любой картины я попытался выходит как

данные: изображения/PNG; base64, iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAxUlEQVR4nO3BMQEAAADCoPVPbQhfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA1v9QAATX68/0AAAAASUVORK5CYII =.

Если вы попытаетесь использовать это, это не создаст фотографию самолета, который был на холсте. Как я могу использовать функцию toDataURL, чтобы нарисовать изображение на другом холсте?

+0

Если вы попытаетесь использовать это, это не создаст фотографию самолета, который был на холсте. –

+0

У меня есть [править] ваш вопрос, чтобы объяснить, что * не работает * точно означает. Вы можете взять [тур] и посетить [помощь], пока ждете ответов. – rene

+0

Я вижу в вашем коде несколько вещей, которые ... отключены. Удалите кавычки вокруг переменной имени холста здесь: 'var myCanvas = document.getElementById ('name_of_canvas');', используйте 'myCanvas' вместо' canvas' здесь: 'var ctx2 = canvas.getContext ('2d');' – Niddro

ответ

0

Вы можете посмотреть на пример использования HTMLCanvasElement.toDataURL() в developer.mozilla.org

toDataURL возвращает действительные base64 закодированного изображения. Поэтому проблема заключается в том, как вы назначаете это изображение для второго холста.

+0

Нет. Я прошел действительную базу 64 на другой холст. Проблема, по-моему, связана с dataURL. Хотя, если вы можете использовать приведенный выше код для загрузки изображения на первом холсте и получения действительного 64, я с удовольствием отвечу ответ :) –

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