vue如何复制图片和下载图片

我这边有个需求,是分享某课程的二维码,这个分享有两种形式:可以下载二维码、海报,也可以复制二维码。

二维码生成我使用的是VueQr,是个很方便简单的vue插件,生成的二维码是解析后是一个img标签的图片。

<vue-qr
 ref="Qrcode"
 :dot-scale="1"
  :text="config.value"
  :download="downloadFilename"
  :size="200"
  :margin="0"
  class="qrcode"
/>

其中属性可以查对应文档,不在此赘述。

点击复制按钮的方法,需要先引入

import html2canvas from "html2canvas";
copyImg(e) {
       html2canvas(document.getElementById('QR-code')).then(async (canvas) => {
        this.imgUrl = canvas.toDataURL();
        const data = await fetch(this.imgUrl);
        const blob = await data.blob();

        await navigator.clipboard.write([
          new ClipboardItem({
            [blob.type]: blob,
          }),
        ]);
        this.$message({
          message: "复制成功,请粘贴二维码分享",
          showClose: true,
        });
      });
    },

可以直接粘贴到微信qq等软件中。

只下载二维码方法的就比较简单,就是借助a标签,点击下载。

downloadImg() {
      const iconUrl = this.$refs.Qrcode.$el.src;
      let a = document.createElement("a");
      let event = new MouseEvent("click");
      a.download = this.details.name + "二维码";
      a.href = iconUrl;
      a.dispatchEvent(event);
    },

然后是一个海报,

说白了也是借助a标签,不过首先需要让图层生成一个画布。因此引入

import html2canvas from "html2canvas";
submitDown() {
      var opts = {
        scale: 3,
        logging: true, // 启用日志记录以进行调试 (发现加上对去白边有帮助)
        allowTaint: true, // 否允许跨源图像污染画布
        backgroundColor: null, // 解决生成的图片有白边
        useCORS: true, // 如果截图的内容里有图片,解决文件跨域问题
      };
      html2canvas(this.$refs.posterImg, opts).then((canvas) => {
        // this.$refs.addImage.append(canvas);//在下面添加canvas节点
        let link = document.createElement("a");
        link.href = canvas.toDataURL(); //下载链接
        link.setAttribute("download", this.questionInfo.name+".png");
        link.style.display = "none";
        document.body.appendChild(link);
        link.click();
      });
    },

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值