2012-07-04 11 views
5

Escribo una aplicación de phonegap para Android y en un momento, guardo una cadena PNG base64 como un archivo. Sin embargo, he observado que la cadena simplemente se vierte en un archivo y no se puede ver como una imagen cuando se abre.Phonegap - ¿Cómo generar un archivo de imagen desde la cadena base64?

Me gustaría ser capaz de guardar una imagen generada a partir de los string.This base64 es lo que tengo:

El Javascript (Formateada para 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); 
} 

Probé editar el código para guardar solo los datos de la imagen, pero tampoco funcionó. (Ver más abajo)

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

El HTML que desencadena Everthing:

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

favor, ayuda. Gracias.

+0

Este podría ser la respuesta para esta questio n: [pregunta 11321347 de stackoferflow] (http://stackoverflow.com/questions/8110294/nodejs-base64-image-encoding-decoding-not-quite-working) – fider

Respuesta

7

Solo necesita configurar el src de su imagen en los datos de la base 64 para ver la imagen.

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

Estoy intentando guardar el archivo en el disco; no generarlo para el navegador. Pero gracias por intentarlo, Simon. – mukama

+0

Puede que necesite escribir un complemento ... Escribí un complemento para iOS que guarda una imagen de lienzo en la Biblioteca de fotos, es posible que tenga que hacer algo similar. ¿Tal vez comenzar echando un vistazo a cómo se guardan las imágenes en la API de la cámara Android de Córdoba? – Devgeeks

+1

Bien, preguntaste "Me gustaría poder ver una imagen generada desde la cadena base64". así que eso es lo que respondí. Está escribiendo correctamente los datos de base64 en el archivo. Si carga esos datos en una cadena y establece el src como mencioné, será visible. Si desea convertir esa cadena base64 en un archivo binario png, tendrá que escribir un complemento para hacerlo. –

0

aquí hay necesidad de reemplazar cadena de base 64, acaba de establecer la cadena de conversión siguiendo:

en javascript:

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

en jQuery:

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