DOM转成图片,图片打包成压缩包下载

效果如下:
在这里插入图片描述

在这里插入图片描述

1.首先需要俩个插件
dom-to-image 将DOM转成图片

npm install --save dom-to-image

jszip 打包成压缩包

npm install --save jszip  

在页面引入

import JSZip from "jszip";
import domtoimage from "dom-to-image";

先拿到想要的DOM 或者document.getElementById() 这里我是VUE页面 this.$refs.growBox

DOM转图片 :

  domtoimage.toPng(this.$refs.growBox).then((dataUrl) => {
    var newUrl = dataUrl.slice(22);
    // 必须把base64的头给去掉才能转成图片,不然后面使用jszip插件的时候,插件会检测到该数据是一个文件路径而导致报错
    console.log(newUrl);
    var base64Arr = [];
    var obj =  { name: "第一张图片", base64: newUrl }
    // obj 一个对象一张图片  name 文件名
    base64Arr.push(obj);
    // 当数据保存完之后,开始执行打包压缩方法
    this.dataJSzip(base64Arr);
  });

打包:

    dataJSzip(base64Arr) {
      var zip = new JSZip();
      // 遍历数据
      base64Arr.map((obj) => {
        // 往zip包里面不断塞png文件,使用上面保存的 name 作为文件名
        // 后面的 { base64: true } 记得设置,意思为允许 base64 的数据
        zip.file(`${obj.name}.png`, obj.base64, { base64: true });
        // 更改文件名后缀可以更换图片格式 .jpg
      });
      zip.generateAsync({type: "blob" }) .then((content)=> {
          // 下载后的压缩包文件名
          var filename = `批量下载.zip`;
          // 创建的可下载链接
          var eleLink = document.createElement("a");
          // 往 body 加入 a 标签
          document.body.appendChild(eleLink);
          eleLink.download = filename;
          // 下载内容转变成blob地址
          eleLink.href = URL.createObjectURL(content);
          // 触发点击
          eleLink.click();
          // 然后移除
          document.body.removeChild(eleLink);
        });
    },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中将DOM节点转换为图像需要借助于HTML5的Canvas元素和toDataURL()方法。下面是具体步骤: 1. 安装html2canvas 在Vue中使用html2canvas库可以方便地将DOM节点转换为图像。可以使用npm或yarn安装html2canvas: ``` npm install html2canvas --save ``` 或 ``` yarn add html2canvas ``` 2. 编写代码 在Vue组件中,可以通过refs获取要转换为图片DOM节点。然后可以在mounted钩子函数中使用html2canvas库将DOM节点绘制到Canvas元素上。最后,可以将Canvas元素转换为base64编码的图像数据,将其设置为图片的src属性。 以下是示例代码: ``` <template> <div> <div ref="content"> <!-- 要转换为图片的内容 --> </div> <button @click="convertToImage">转换为图片</button> <img ref="image"> </div> </template> <script> import html2canvas from 'html2canvas'; export default { mounted() { // 将DOM节点转换为Canvas元素 html2canvas(this.$refs.content) .then(canvas => { // 将Canvas元素转换为图像数据 const dataURL = canvas.toDataURL(); this.$refs.image.src = dataURL; }) }, methods: { convertToImage() { // 点击按钮时重新绘制Canvas元素 html2canvas(this.$refs.content) .then(canvas => { const dataURL = canvas.toDataURL(); this.$refs.image.src = dataURL; }) } } } </script> ``` 此代码将一个div元素(使用ref="content"引用)转换为图像,并将其显示在一个img元素(使用ref="image"引用)中。在mounted钩子函数中,dom节点会立即被转换canvas并渲染为图像。在convertToImage方法中,会在点击按钮时重新绘制Canvas元素。 3. 注意事项 使用这种方法将DOM节点转换为图像有一些注意事项: - 由于Canvas元素具有像素密度,因此可以通过设置宽度和高度属性来调整画布的分辨率。例如:canvas.width = 500,canvas.height = 500; - 转换为图像的DOM节点中不能包含跨域资源,否则不会渲染到Canvas中; - 转换的DOM节点中的CSS可能会失效,在绘制到Canvas之前需要手动覆盖样式。 总之,通过安装html2canvas库,将DOM节点转换为Canvas元素,并使用toDataURL()方法将其转换为图像数据是可行的。需要注意的是,可能需要处理像素密度,跨域资源和CSS兼容性的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值