threejs压缩图片小工具

[复制链接]
查看: 1444   回复: 0

268

主题

268

帖子

1509

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1509
2023-10-21 15:52:38   显示全部楼层   阅读模式  
2.png


https://www.xiefansq.cn/threejsP/2023/10/21/

// 生成多个Blob对象,这里假设你已经有了这些Blob对象  
let blobs = [blob1, blob2, blob3]; // 将实际的Blob对象替换为示例变量  
  
// 创建一个新的Blob对象,用于存储ZIP文件  
let zipBlob = new Blob([''], { type: 'application/zip' });  
  
// 创建一个Blob URL,用于在浏览器中显示ZIP文件  
let zipUrl = URL.createObjectURL(zipBlob);  
  
// 创建一个新的File API对象,用于表示ZIP文件  
let zipFile = new File([zipBlob], 'archive.zip', { type: 'application/zip' });  
  
// 创建一个新的下载链接元素  
let downloadLink = document.createElement('a');  
downloadLink.href = zipUrl;  
downloadLink.download = zipFile.name;  
  
// 创建一个新的文件夹名称  
let folderName = 'MyFolder';  
  
// 遍历Blob数组,将每个Blob对象转换为图片文件,并添加到ZIP文件中  
for (let i = 0; i < blobs.length; i++) {  
  // 创建一个新的图片元素  
  let img = document.createElement('img');  
  img.src = URL.createObjectURL(blobs[i]); // 将Blob对象转换为URL  
  
  // 创建一个新的canvas元素,用于绘制图片  
  let canvas = document.createElement('canvas');  
  canvas.width = img.width;  
  canvas.height = img.height;  
  let ctx = canvas.getContext('2d');  
  ctx.drawImage(img, 0, 0, img.width, img.height);  
  
  // 将图片数据转换为新的Blob对象  
  let imageBlob = canvas.toDataURL('image/png').split(',')[1];  
  let imageBlobParser = new BlobParser();  
  let imageBlobParsed = imageBlobParser.dataURItoBlob(imageBlob);  
  
  // 将新的Blob对象添加到ZIP文件中  
  zipBlob = zipBlob.slice(0, zipBlob.size, zipBlob.size + imageBlobParsed.size);  
  zipBlob.append(imageBlobParsed);  
}  
  
// 设置下载链接的href属性为ZIP文件的Blob URL  
downloadLink.href = URL.createObjectURL(zipBlob);  
  
// 将下载链接添加到页面中,并触发点击事件以开始下载ZIP文件  
document.body.appendChild(downloadLink);  
downloadLink.click();

回复

使用道具 举报

您需要登录后才可以回帖   登录 立即注册

高级模式

南通谢凡软件科技有限公司