图片打包压缩下载

图片打包压缩下载

首先获取base64的图片

打包压缩下载

安装插件,执行下面的命令:

npm install jszip file-saver --save

关键代码

      images: [
        { name: 'image1.jpg', content: '/9j/4AAQSkZJRgABAQE...' }, // Base64 图片字符串
        { name: 'image2.png', content: 'iVBORw0KGgoAAAANSUhEUgA...' } // 另一张Base64图片
      ]
	const downloadImagesAsZip = async (arr: any) => {
		const zip = new JSZip();
		arr.forEach((img: any, index: number) => {
			zip.file(img.name, img.content, { base64: true });
		});
		const content = await zip.generateAsync({ type: 'blob' });
		saveAs(content, 'images.zip'); // 自定义ZIP文件名
	};

获取图片

<div class="content" ref="Container">
 <!-- 中间放需要截图的内容 -->
</div>

截图获取base64图片

	const captureAndDownloadAll = async () => {
		if (Container.value) {
			try {
				const canvas = await html2canvas(Container.value);
				const link = document.createElement('a');
				link.href = canvas.toDataURL('image/png');

				return link.href.replace(/^data:image\/(png|jpg);base64,/, '');
			} catch (error) {
				console.error('Error capturing the div content:', error);
			}
		}
	};

当有多个内容区的时候,循环执行获取

	const downloadAll = () => {
		let arr: { name: string; content: Promise<string | undefined> }[] = [];

		chartRefs.value.forEach((element, index) => {
			let p = new Promise((resolve, reject) => {
				resolve({
					name: index + '.png',
					content: element.captureAndDownloadAll(),
				});
			});
			arr.push(p);
		});
		Promise.all(arr).then((res) => {
			downloadImagesAsZip(res);
		});
	};

打包下载

	const downloadImagesAsZip = async (arr: any) => {
		const zip = new JSZip();
		arr.forEach((img: any, index: number) => {
			zip.file(img.name, img.content, { base64: true });
		});
		const content = await zip.generateAsync({ type: 'blob' });
		saveAs(content, 'images.zip'); // 自定义ZIP文件名
	};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值