大批量图片打包zip下载

    xiaoxiao2022-06-30  145

    使用插件

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script src="js/jszip.min.js"></script> <script src="vendor/FileSaver.js"></script>

    请求后台返回的图片列表

    前端代码

    <button onclick="getImgsUrl()">大批量图片打包zip下载</button> <script> // 请求后台返回图片url列表 function getImgsUrl() { axios({ method: 'get', url: 'https://xxx.com.cn/v1/sys/ai-collect-photo/export/local?nums=10000', }).then(function (res) { console.log(res) var imgsArr = res.data.data; // 图片列表 // 传入图片数组列表 saveImgZip(imgsArr) }).catch(function (err) { console.log(err) }) } //图片转base64; 传入图片路径,返回base64 function getBase64(img) { function getBase64Image(img, width, height) { var canvas = document.createElement("canvas"); canvas.width = width ? width : img.width; canvas.height = height ? height : img.height; var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, canvas.width, canvas.height); var dataURL = canvas.toDataURL(); return dataURL; } var image = new Image(); image.crossOrigin = 'Anonymous'; image.src = img; /* * deferred对象是一个延迟对象,意思是函数延迟到某个点才开始执行,改变执行状态的方法有两个(成功:resolve和失败:reject), * 分别对应两种执行回调(成功回调函数:done和失败回调函数fail) * */ var deferred = $.Deferred(); if (img) { image.onload = function () { // 执行成功回调 deferred.resolve(getBase64Image(image)); } return deferred.promise(); } } // jszip打包下载图片 function saveImgZip(imgUrlArrs) { var imgUrlArr = []; // 图片列表 imgUrlArr = imgUrlArrs var imgBase64 = []; // 存放图片转base64后的数组 var imgNameArr = []; // 图片名称 var imageSuffix = []; // 图片后缀 for (var i = 0; i < imgUrlArrs.length; i++) { // 图片后缀 var suffix = imgUrlArrs[i].substring(imgUrlArrs[i].lastIndexOf(".")); // console.log(suffix) imageSuffix.push(suffix); } // 创建JSZip对象 var zip = new JSZip(); // 创建文件 // zip.file("readme.txt", "已采集通过的人员照片"); // 创建文件夹 var img = zip.folder("images"); // 读取图片返回base64 for (var i = 0; i < imgUrlArr.length; i++) { getBase64(imgUrlArr[i]).then(function (base64) { // console.log(base64) imgBase64.push(base64.substring(22)); // 去掉base64的图片格式前缀 }, function (err) { console.log(err); }); } function downloadZip() { setTimeout(function () { if (imgUrlArr.length == imgBase64.length) { for (var i = 0; i < imgUrlArr.length; i++) { img.file(i + imageSuffix[i], imgBase64[i], {base64: true}); } zip.generateAsync({type: "blob"}).then(function (content) { saveAs(content, "采集照片.zip"); // zip包命名 }); } else { downloadZip(); } }, 100); } downloadZip() } </script>

     


    最新回复(0)