Sto scrivendo un'applicazione mobile multipiattaforma utilizzando phonegap, e ho un input di caricamento file per il caricamento di immagini di singole immagini.Riduci l'immagine prima di caricarla con javascript
Il problema è che la maggior parte delle immagini che vengono caricate sono quelle prese con il telefono cellulare che sono circa 4 MB di dimensioni.
Desidero ridurre drasticamente queste immagini, in quanto non ne ho affatto bisogno.
Inoltre, ho bisogno di convertirli in base64 e non nel file immagine reale. (Che ho già utilizzato FileReader)
Qualche idea su come raggiungere questo obiettivo? Forse usando la tela o qualcosa del genere?
Aggiornamento: ecco ciò che ho finora:
function shrink() {
var self = this;
var reader = new FileReader(); // init a file reader
var file = $('#file-input').prop('files')[0]; // get file from input
reader.onloadend = function() {
// shrink image
var image = document.createElement('img');
image.src = reader.result;
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
ctx.drawImage(image, 0, 0, 300, 300);
var shrinked = canvas.toDataURL('image/jpeg');
console.log(shrinked);
};
reader.readAsDataURL(file); // convert file to base64*/
}
ma tutto quello che ottiene è un'immagine in bianco Grazie
http: // StackOverflow .com/questions/2434458/image-resizing-client-side-with-javascript-before-upload-to-the-server (che porta a http://hacks.mozilla.org/2011/01/how-to- develop-a-html5-image-uploader /) – Sygmoral
aggiornato nel post – shaharmor