2013-12-07 7 views
5

utilizzare questo codice per salvare le immagini in Javascript:estensione mancante durante il salvataggio di un'immagine da tela

window.location.href = grid.toDataURL("image/png").replace("image/png", "image/octet-stream"); 

il codice funziona, ma il file salvato non ha estensione, devo rinominare manualmente.

La mia domanda è come posso inserire l'estensione alla fine?

Grazie.

risposta

7

toDataURL produce un data-uri non un nome di file quindi le estensioni non si applicano in questo caso.

Un data-uri è semplicemente una versione codificata di testo del contenuto binario che alcuni browser possono leggere come un file, un flusso di dati, se lo si desidera. Poiché i flussi di dati non hanno alcun nome file, non è possibile allegarne uno.

È possibile aggirare questo impostando un tag di ancoraggio in questo modo:

<a id="imageLink" href="data-uri-here" download="myFilename.png"> 
    Click to download 
</a> 

In JavaScript è possibile impostare questi attributi dinamici:

imageLink.href = grid.toDataURL(); 
imageLink.download = 'myOtherFilename.png'; 
+0

Roba molto cool! Grazie;) Esiste un altro modo per produrre questo invece di dichiarare il collegamento in html? Uso la libreria dat-gui per i miei pulsanti e non so come creare il download attr. – mickaelb91

+0

@ mickaelb91 certo, puoi semplicemente creare il tag anche in javascript. C'è anche l'opzione di attivare automagicamente un clic. Dai un'occhiata a questo: http://stackoverflow.com/questions/18480474/how-to-save-an-image-from-canvas/18480879#18480879 – K3N