Estoy desarrollando una extensión de cromo.Guardar imagen de lienzo PNG en almacenamiento HTML5 (JAVASCRIPT)?
Abro un archivo de imagen en lienzo, le aplico algunos cambios, luego intento guardarlo en la api del sistema de archivos HTML5.
En primer lugar me da la DataURL del lienzo:
var dataURL = canvas.toDataURL('image/png;base64');
A continuación, sólo los datos:
var image64 = dataURL.replace(/data:image\/png;base64,/, '');
Entonces hago un Blob.
var bb = new BlobBuilder();
bb.append(image64);
var blob = bb.getBlob('image/png');
Luego solicito el sistema de archivos con la siguiente función onInitFs();
function onInitFs(fs) {
fs.root.getFile('image.png', {create: true}, function(fileEntry) {
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function(fileWriter) {
//WRITING THE BLOB TO FILE
fileWriter.write(blob);
}, errorHandler);
}, errorHandler);
}
window.requestFileSystem(window.PERSISTENT, 5*1024*1024, onInitFs, errorHandler);
Esto se traduce en un archivo dañado de escribirse en el sistema de archivos.
No sé qué más puedo hacer para que esto funcione.
Podría alguien guiarme en la dirección correcta.
Las siguientes son algunas de las fuentes de las funciones que estoy usando para realizar esta tarea.
http://dev.w3.org/html5/canvas-api/canvas-2d-api.html#todataurl-method
http://www.html5rocks.com/en/tutorials/file/filesystem/#toc-file-creatingempty
Gracias!
no me gusta cuando HTML5 va si la gente como se almacenarán de forma aleatoria 5 MB de datos en mi disco duro ... – Blindy
lo que hizo que ese número grande para propósitos de prueba. Definitivamente bajaré ese número. Creo que el plan para el futuro es que si una aplicación está tratando de usar el almacenamiento en su computadora, primero debe pedir permiso al usuario para hacerlo. Pero ahora mismo, puede especificar "unlimitedStorage" en el manifiesto y puede almacenar tantos datos como desee. :) – Rob