【js 图片批量自定义打包下载】

article/2025/6/8 6:55:22

压缩图片打包本地下载

  • 一、依赖安转
  • 二、函数封装
  • 三、打包压缩
  • 四、应用
  • 五、示例图

一、依赖安转

  • 打包工具
npm install file-saver --save
npm install jszip --save

二、函数封装

  • 对图片进行处理
function getBase64Image(src) {return new Promise((resolve, reject) => {let canvas = document.createElement('canvas');const ctx = canvas.getContext('2d');const img = new Image();img.crossOrigin = 'Anonymous'; // 解决跨域问题img.onload = function() {canvas.height = img.height;canvas.width = img.width;ctx.drawImage(img, 0, 0);const dataURL = canvas.toDataURL('image/png');const base64Data = dataURL.split(',')[1];resolve(base64Data);canvas = null; // 释放内存};img.onerror = (error) => {reject(error);};img.src = src;});
}

三、打包压缩

async function batchExportImages(urls, fileName = '图片文件夹', zipName = '图片压缩包', row = {}) {try {// 并行获取所有图片的 Base64 数据const base64Promises = urls.map((url) => getBase64Image(url));const base64Results = await Promise.all(base64Promises);// 创建 ZIP 压缩包const zip = new JSZip();const imgFolder = zip.folder(fileName);// 将每张图片添加到 ZIP 压缩包中base64Results.forEach((base64Data, index) => {imgFolder.file(`${row.handler || ''}-${row.mobile || ''}-${index + 1}.png`, base64Data, {base64: true});});// 生成 ZIP 文件并触发下载const zipBlob = await zip.generateAsync({type: 'blob'});FileSaver.saveAs(zipBlob, `${zipName}.zip`);} catch (error) {console.error('批量导出图片失败:', error);throw error; // 可以根据需要选择是否抛出错误}
}

四、应用

        downloadFile() {// 使用示例const urls = ['https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg','https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg','https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg'];const row = {handler: '张三',mobile: '13800138000'};this.loading = true;batchExportImages(urls,,,row).then(() => {this.loading = false;console.log('图片批量导出成功');}).catch((error) => {this.loading = false;console.error('图片批量导出失败:', error);});}

五、示例图

示例: ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=!%5B%E5%9C%A8%E8%BF%99%E9%87%8C%E6%8F%92%E5%85%A5%E5%9B%BE%E7%89%87%E6%8F%8F%E8%BF%B0%5D(https%3A%2F%2Fi-blog.csdnimg.cn%2Fdirect%2F47b9c746096c4b0fbbde47f2b176f041.png&pos_id=img-ksyN2x80-1748935654921)
)

  • 链接: 转载

http://www.hkcw.cn/article/POAJdsnWPt.shtml

相关文章

如何轻松地将数据从 iPhone传输到iPhone 16

对升级到 iPhone 16 感到兴奋吗?恭喜!然而,除了兴奋之外,学习如何将数据从 iPhone 传输到 iPhone 16 也很重要。毕竟,那些重要的联系人、笔记等都是不可或缺的。为了实现轻松的iPhone 到 iPhone 传输,我们总…

Adobe Acrobat——设置PDF打印页面的大小

1. 打开 PDF 文件; 2. 点击菜单栏的 “文件” → “打印”; 3. 在打印对话框中,点击 “属性”; 4. 点击 “布局”→ “高级”; 5. 点击 “纸张规格”,选择 “PostScript 自定义页面大小”,然后…

胜牌™全球成为2026年FIFA世界杯™官方赞助商

胜牌全球将首次与国际足联(FIFA)旗舰赛事建立合作关系。 此次赞助恰逢美国首个润滑油品牌即将迎来160周年之际,其国际扩张步伐正在加快。 在这项全球顶级赛事筹备期间,胜牌全球将通过各种富有创意的零售和体验活动与球迷互动。 …

mpg123在MSVC编译器中使用。

官网下载: 下载后打开以下窗口程序: 在此窗口程序中打开所下载的mpg123文件夹。在此文件夹中输入以下命令: dumpbin /EXPORTS libsyn123-0.dll > libsyn123-0.exports lib /DEF:libsyn123-0.def /OUT:libsyn123-0.lib /MACHINE:x64其中…

【LangServe部署流程】5 分钟部署你的 AI 服务

目录 一、LangServe简介 二、环境准备 1. 安装必要依赖 2. 编写一个 LangChain 可运行链(Runnable) 3. 启动 LangServe 服务 4. 启动服务 5. 使用 API 进行调用 三、可选:访问交互式 Swagger 文档 四、基于 LangServe 的 RAG 应用部…

苍穹外卖--HttpClient

1.介绍 HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议 依赖: 核心API: ①HTTPClient ②HTTPClients ③Closeabl…

最佳实践 | 璞华易研“PLM+AI智能研发平台”,助力汉旸科技实现高新材料“数据驱动研发”

合作动态 | PURVAR 日前,汉旸科技与璞华科技达成战略合作,正式引入璞华易研PLMAI智能研发平台。双方基于行业技术需求与数字化转型目标,快速完成研发全流程数字化管理框架的顶层设计与蓝图规划,为技术迭代与产品创新奠定坚实的数…

MongoDB数据库学习

学习链接:https://www.runoob.com/mongodb/mongodb-tutorial.html 图解MongoDB数据库学习路线指南 MongoDB初级 1. 基本概念学习 一定要记住的概念: 文档是一组键值(key-value)对(即 BSON)。 集合就是 MongoDB 文档组,类似于 RDBMS &…

软考 系统架构设计师系列知识点之杂项集萃(79)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(78) 第141题 软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机…

分布式拜占庭容错算法——PBFT算法深度解析

Java 实现PBFT算法深度解析 一、PBFT核心流程 #mermaid-svg-3DQWQzd1C7QGWkMv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3DQWQzd1C7QGWkMv .error-icon{fill:#552222;}#mermaid-svg-3DQWQzd1C7QGWkMv .error-…

【LUT技术专题】图像自适应3DLUT代码讲解

本文是对图像自适应3DLUT技术的代码解读,原文解读请看图像自适应3DLUT文章讲解 1、原文概要 结合3D LUT和CNN,使用成对和非成对的数据集进行训练,训练后能够完成自动的图像增强,同时还可以做到极低的资源消耗。下图为整个模型的…

Docker 在 AI 开发中的实践:GPU 支持与深度学习环境的容器化

人工智能(AI)和机器学习(ML),特别是深度学习,正以前所未有的速度发展。然而,AI 模型的开发和部署并非易事。开发者常常面临复杂的依赖管理(如 Python 版本、TensorFlow/PyTorch 版本、CUDA、cuDNN)、异构硬件(CPU 和 GPU)支持以及环境复现困难等痛点。这些挑战严重阻…

COMSOL多边形骨料堆积混凝土水化热传热模拟

混凝土水化热温降研究对保障结构安全与耐久性至关重要,温升后温差易引发温度应力,导致裂缝。本案例介绍在COMSOL内建立多边形骨料堆积混凝土细观模型,并对水化热产生后的传热及温度变化进行仿真模拟。 骨料堆积混凝土细观模型采用CAD多边形…

vue入门环境搭建及demo运行

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 vue简介:第一步:安装node.jsnode简介第二步:安装vue.js第三步:安装vue-cli工具第四步 :安装webpack第五步…

OpenCV CUDA模块图像处理------图像融合函数blendLinear()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数执行 线性融合(加权平均) 两个图像 img1 和 img2,使用对应的权重图 weights1 和 weights2。 融合公式…

“packageManager“: “pnpm@9.6.0“ 配置如何正确启动项目?

今天在学习开源项目的时候,在安装依赖时遇到了一个报错 yarn add pnpm9.6.0 error This projects package.json defines "packageManager": "yarnpnpm9.6.0". However the current global version of Yarn is 1.22.22.Presence of the "…

物联网数据归档之数据存储方案选择分析

在上一篇文章中《物联网数据归档方案选择分析》中凯哥分析了归档设计的两种方案,并对两种方案进行了对比。这篇文章咱们就来分析分析,归档后数据应该存储在哪里?及存储方案对比。 这里就选择常用的mysql及taos数据库来存储归档后的数据吧。 你在处理设备归档表存储方案时对…

八.MySQL复合查询

一.基本查询回顾 分组统计 group by 函数作用示例语句说明count(*)统计记录条数select deptno, count(*) from emp group by deptno;每个部门有多少人?sum(sal)某字段求和select deptno, sum(sal) from emp group by deptno;每个部门总工资avg(sal)求平均值select…

智能补丁管理:终结安全漏洞,开启自动化运维新时代

漏洞风暴:数字化时代的隐形战场 全球安全态势的范式转移 近年来,终端层漏洞已成为企业安全防线的最大突破口。根据美国国家标准与技术研究院(NIST)的监测数据,2023年新披露的高危漏洞数量同比增长62%,其中…