Я занимался этой проблемой в течение последних 2 дней, и моя голова вот-вот взорвется.
Я проверил все вопросы, связанные с моей проблемой в SO, и не смог найти способисправить это.
То, что я пытаюсь сделать, это;Пользователь пытается загрузить изображения, они изменяются в размере на стороне клиента, а затем они загружаются.Я использовал Библиотека Пика .Все отлично работает для одного файла.Однако, когда я изменил его на несколько файлов, я получаю дубликаты последнего изображения.
Что происходит: цикл от 1 до N раз -> resizeImg N раз
Идеальное решение: цикл 1 ->resizeImg (1) -> Loop 2 -> resizeImg (2)
Любая помощь будет оценена.
Мой код ниже
function resizeImg(source) {
img = new Image;
img.src = source;
img.onload = function() {
width = img.naturalWidth;
height = img.naturalHeight;
ratio = Math.min(targetWidth / width, targetHeight / height);
resizer = window.pica();
canvas = document.createElement("canvas");
ctx = canvas.getContext("2d");
ctx.canvas.width = width * ratio;
ctx.canvas.height = height * ratio;
resizer.resize(img, canvas, {
quality: 3,
alpha: true,
unsharpAmount: 0
}).then(result => resizer.toBlob(result, 'image/jpeg', 0.90)).then(blob => imgBlobArray.push(blob)).then(function() {
console.log(i);
console.log(imgBlobArray);
});
};
}
document.getElementById('select').onchange = function(evt) {
for (i = 0; i < this.files.length; i++) {
resizeImg(window.URL.createObjectURL(this.files[i]));
}
}