Я использую 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");
});
});
Пожалуйста, помогите мне с лучшим подходом, если это возможно. Спасибо.