Пустой zip возвращается при создании zip изображений с помощью JSZip - PullRequest
0 голосов
/ 29 октября 2019

Я использую JSZip и пытаюсь создать почтовый индекс изображений (с учетом URL-адресов изображений). Первоначально я пытался с преобразованием base64 (canvas.toDataURL), но это создает некоторые поврежденные изображения внутри zip. Так что позже я перешел на подход, основанный на блобах. Сейчас я создаю canvas из img, а затем преобразую его в blob, чтобы сжать его. Теперь, когда метод canvas.toBlob работает асинхронно, мои конечные zip-файлы возвращаются пустыми (с пустой папкой с изображениями). Это может быть причиной, я догадался. Я могу ошибаться.

$("#download-images-small").on("click", function(){
    var links = []
    // get the list of images on page
    var selections = $('.checkbox:checked').parent('label').siblings("img")
    var zip = new JSZip();
    zip.folder("images");
    var img = zip.folder("images");

    for (var i = selections.length - 1; i >= 0; i--) {
        filename = $(selections[i]).attr('title') + "." + $(selections[i]).data('type')
        var canvas = document.createElement("canvas");
        canvas.width = selections[i].width;
        canvas.height = selections[i].height;
        var ctx = canvas.getContext("2d");
        ctx.drawImage(selections[i], 0, 0);
        canvas.toBlob(function (blob) {
           zip.file(filename, blob);
        });
    }

    zip.generateAsync({type:"blob"}).then(function(content) {
      saveAs(content, "compressed.zip");
    });
});

Пожалуйста, помогите мне с лучшим подходом, если это возможно. Спасибо.

...