2012-07-04 5 views
5

Sto scrivendo un'app di PhoneGap per Android e ad un certo punto, ho salvato una stringa PNG base64 come un file. Tuttavia, ho osservato che la stringa è semplicemente scaricata in un file e non può essere vista come un'immagine quando viene aperta.PhoneGap - Come generare file immagine dalla stringa base64?

mi piacerebbe essere in grado di salvare un'immagine generata dai string.This base64 è quello che ho:

Il Javascript (con forma specificata per PhoneGap):

/*** Saving The Pic ***/ 
var dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; //A simple red dot 

function gotFS(fileSystem) { 
    fileSystem.root.getFile("dot.png", {create: true, exclusive: false}, gotFileEntry, fail); 
} 

function gotFileEntry(fileEntry) { 
    fileEntry.createWriter(gotFileWriter, fail); 
} 

function gotFileWriter(writer) { 
    writer.write(dataURL); //does not open as image 
} 

function fail(error) { 
    console.log(error.code); 
} 

ho provato modificare il codice per salvare solo i dati dell'immagine ma non ha funzionato neanche. (Vedi sotto)

function gotFileWriter(writer) { 
    var justTheData = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");//Removes everything up to ...'base64,' 
    writer.write(justTheData); //also does not show 
} 

Il codice HTML che innesca everthing:

<p onclick="window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail)">Save a Dot</p> 

prega di aiuto. Grazie.

+0

Questo potrebbe essere la risposta per questa questio n: [domanda dello stackoferflow 11321347] (http://stackoverflow.com/questions/8110294/nodejs-base64-image-encoding-decoding-not-quite-working) – fider

risposta

7

È sufficiente impostare l'src dell'immagine ai dati di base 64 per visualizzare l'immagine.

var image = document.getElementById('myImage'); 
image.src = "data:image/jpeg;base64," + justTheData; 
+4

Sto tentando di salvare il file sul disco; non generarlo per il browser. Ma grazie per aver provato, Simon. – mukama

+0

Potrebbe essere necessario scrivere un plug-in ... Ho scritto un plug-in per iOS che salva un'immagine della tela nella Libreria foto, potrebbe essere necessario fare qualcosa di simile. Forse inizi a dare un'occhiata a come vengono salvate le immagini nell'API Android della Cordova per Android? – Devgeeks

+1

Bene hai chiesto "Mi piacerebbe essere in grado di visualizzare un'immagine generata dalla stringa base64". questo è quello che ho risposto. Stai scrivendo correttamente i dati di base64 su file. Se carichi quei dati in una stringa e imposti lo src come accennato, sarà visibile. Se vuoi convertire quella stringa base64 in un file png binario dovrai scrivere un plugin per farlo. –

0

qui non c'è bisogno di sostituire stringa base64, è sufficiente impostare stringa convert dal seguente:

in javascript:

var image = document.getElementById('myImage'); 
image.src = justTheData;// this convert data 

in jQuery:

$("#imageid").attr("src",justTheData)