html2canvas截图下载图片

实现效果:

二维码是从后端获取的,背景图是前端固定的,要求是背景图和二维码一起下载下来,需要转成canvas下载

代码:

安装:

npm install --save html2canvas

html:

<div id="img" class="p-4 flex justify-center">
  <van-image
    class="relative flex justify-center"
    width="322"
    height="362"
    :src="require('@/assets/images/qrisBg.png')"
    alt=""
  >
    <img
      class="absolute"
      width="220"
      height="220"
      :src="require('@/assets/images/qr_code.png')"
      style="top: 26px"
      alt=""
    />
    <div class="absolute bottom-4">
      <div
        class="text-[#FFFEFE] text-base font-semibold text-center mb-2"
      >
        Scan OR code
      </div>
      <div class="text-xs text-[#fff] text-center">
        {{ $t("cashier.qrisBgText") }}
      </div>
    </div>
  </van-image>
</div>

点击事件:

<div class="px-5 py-5">
  <van-button
    class="rounded-lg"
    color="#36D28F"
    block
    @click="downloadImg"
    >{{ $t("cashier.download") }}</van-button
  >
</div>

在要下载的div添加一个id,通过点击事件下载

js:

methods: {
    async downloadImg() {
      let canvas = await html2canvas(document.querySelector("#img"), {
        dpi: window.devicePixelRatio * 2, // 对应屏幕的dpi,适配高清屏,解决canvas模糊问题
        scale: 2, // 缩放
        allowTaint: true, // 是否使用图片跨域
        useCORS: true, // 是否使用图片跨域
        // y: window.scrollY // 根据滚动条来截取--主要用于截取某一个区域
        proxy: "https://sandbox-payment.winpay.id/",
      });
      // canvas参数为生成的canvas的dom节点,可以对其进行dom操作
      // document.getElementById("img").appendChild(canvas);
      // 下载功能
      var save_url = canvas.toDataURL("image/png");
      var a = document.createElement("a");
      document.body.appendChild(a);
      a.href = save_url;
      a.download = "";
      a.click();
    },
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值