Ich verwende Filereader API, um kleine Vorschaubilder von Foto-Uploads anzuzeigen. Ich habe jedoch ein Problem. Wenn Sie wirklich große Bilder hochladen und einige davon hochladen, beginnt es zu verzögern. Die Vorschaubilder sind sehr klein, aber die Dateien sind zu groß. Gibt es eine Möglichkeit, das zu beheben? Hier ist mein javascript:Filereader image thumbnail lags
document.querySelector('input').addEventListener('change', function(e){
var files = e.target.files;
for(var i = 0; i < files.length; i++){
var f = files[i];
var reader = new FileReader();
reader.onload = (function(tf){
return function(evt){
document.querySelector('.thumbs').innerHTML += '<div class="thumb" style="background-image: url('+evt.target.result+')"></div>';
}
})(f);
reader.readAsDataURL(f);
}
});
Hier ist eine Geige, wo Sie es testen können: https://jsfiddle.net/snx79yw2/1/.
Zum Beispiel habe ich es mit 6000x4000 Fotos getestet, und wenn es mehr als 4, 5 sind, beginnen sie zu verzögern (und mein PC ist ziemlich anständig, so sollte es nicht so verzögern).
BTW mit Verzögerung Ich beziehe mich auf verlangsamen, einfrieren etc, nicht tatsächliche Verzögerung.
Ich fand this post, aber ich weiß nicht wirklich, wie man die Lösungen von dieser Antwort implementieren kann. Danke im Voraus!
Danke, das ist großartig. Ich habe jedoch ein paar Fragen: 1) Ist es möglich, die Skalierungsmethode zu ändern (um Alias zu entfernen)? 2) Ich kann ES6 nicht benutzen, sind Versprechungen wirklich notwendig? Wie kann ich sie umgehen? – nick
2) Ich habe meine Antwort bearbeitet, um einen Rückruf statt eines Versprechens zu verwenden. 1) Wahrscheinlich, aber ich weiß nicht genug über Bildverarbeitung, um hier eine Antwort zu finden. –
Danke, ich habe hier eine Lösung gefunden, also werde ich die beiden mischen! – nick