2016-07-19 12 views
1
assets.forEach(function(v) { 

    var canvas = document.createElement('canvas'); 
    canvas.id  = "canvas" + v.name; 
    canvas.width = 200; 
    canvas.height = 150; 
    var ctx = canvas.getContext("2d"); 

    var img = new Image(); 
    img.src = 'file:///path/to/file/' + v.name; 
    img.onload = function() { 
     ctx.drawImage(img, 0, 0, img.width, img.height-256, 0, 0, 200, 150); 
    }; 

    // This is working. Renders correctly and visible. 
    $('#test2').append(canvas); 

    chrome.downloads.download({ 
     url: canvas.toDataURL(), 
     filename: 'file:///path/to/file/test-' + canvas.id + '.png' 
    }); 
}); 

Hallo zusammen, das ist mein Code oben. Was ich versuche, ist ein Bild herunterzuladen, das eine kleinere Version von img ist. Alles funktioniert gut, die Leinwand ist erstellt, ich kann es sehen, wenn sie an ein Element $('#test2').append(canvas); angefügt wird. Aber wenn ich es herunterladen möchte, wird es leer heruntergeladen.Leere Seite wird heruntergeladen (toDataURL())

Wie kann ich das beheben?

+0

gezogen gültiges Bild, wenn Leinwand angehängt wird? – Rayon

+0

Ja, es ist sichtbar, wenn angehängt! @ Rayon –

+0

Ist das leere Bild der gleichen Abmessungen wie das gültige Bild? –

Antwort

2

Invoke download Methode in Image.onload Handler, wie durch die Zeit download Methode aufgerufen wird, ist Image noch nicht gezeichnet

assets.forEach(function(v) { 

    var canvas = document.createElement('canvas'); 
    canvas.id = "canvas" + v.name; 
    canvas.width = 200; 
    canvas.height = 150; 
    var ctx = canvas.getContext("2d"); 

    var img = new Image(); 
    img.src = 'file:///path/to/file/' + v.name; 
    img.onload = function() { 
    ctx.drawImage(img, 0, 0, img.width, img.height - 256, 0, 0, 200, 150); 
    $('#test2').append(canvas); 

    chrome.downloads.download({ 
     url: canvas.toDataURL(), 
     filename: 'file:///path/to/file/test-' + canvas.id + '.png' 
    }); 
    }; 
}); 
+0

Es hat funktioniert! Vielen Dank! Yeeeehaah! –

+0

Ich bin froh, dass es Kumpel geholfen hat! _Happy Coding_ – Rayon