Piszę wieloplatformową aplikację mobilną za pomocą phonegap, i mam wejście do przesyłania plików do przesyłania zdjęć pojedynczych obrazów.Zmniejszenie obrazu przed przesłaniem za pomocą javascript
Problem polega na tym, że większość ładowanych zdjęć to zdjęcia zrobione za pomocą telefonu komórkowego o rozmiarze około 4 MB.
Chcę radykalnie zmniejszyć te obrazy, ponieważ nie potrzebuję ich w ogóle w wysokiej jakości.
Potrzebuję ich również przekonwertować na base64, a nie na prawdziwy plik obrazu. (Że już korzystam z FileReadera)
Jakieś pomysły, jak to osiągnąć? Może za pomocą płótna czy czegoś takiego?
Aktualizacja: tutaj jest to, co mam do tej pory:
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*/
}
ale ja dostać jest czarny obraz Dzięki
http: // stackoverflow .pl/questions/2434458/image-resizing-client-side-with-javascript-before-upload-to-the-server (prowadzi do http://hacks.mozilla.org/2011/01/how-to- develop-a-html5-uploader obrazu /) – Sygmoral
zaktualizowano w poście – shaharmor