vue3生成海报&下载海报

1.安装依赖

npm i html2canvas

生成海报

<template>
  <div id="capture" className="view" style="background: #CCCCCC">
    <div className="title">海报</div>
    <div className="content">
      <p className="captures">内容</p>
      <p className="name">name</p>
    </div>
    <div className="BtnLogo" @click="BtnLogo">
      生成
    </div>
  </div>
</template>
<script setup>
import html2canvas from 'html2canvas'
const logo = ref('')
const logoName = ref('')
const url=ref("")
const BtnLogo = () => {
  // console.log('上传logo')
  let dpi = window.devicePixelRatio || 2
  let options = {
    useCORS: true, //跨域
    ignoreElements: false,
    scale: dpi,
  }
  html2canvas(document.querySelector('#capture'), options).then(canvas => {
    let url= canvas.toDataURL('image/png') //转base64
    document.querySelector('.captures').innerHTML = `<img src="${url}" alt="231231">` 
    //let domimg = document.querySelector('img') //复制-扩展知识
    console.log(url);
  })
}
</script>

效果

32224cfb19334902a7142387ed95fb9e.png

下载海报

<template>
  <div id="capture" class="view" style="background: #CCCCCC">
    <div class="title">海报</div>
    <div class="content">
      <p class="captures">内容</p>
      <p class="wenjun">网才无忧</p>
    </div>
     <div class="BtnLogo" @click="BtnLogo">
        下载
    </div>
  </div>
  </template>
  <script setup>
    import axios from "axios"
  import {uploadFile} from "./Sender/Upfile.js"  
  import html2canvas from 'html2canvas'
  const logo=ref('')
  const logoName=ref('')
  const BtnLogo=()=>{
    // console.log('上传logo')
    let dpi=window.devicePixelRatio||2
    let options={
      useCORS:true, //跨域
      ignoreElements:(ele=>{
        if (ele.id==='wenjun'){
          return true
        }
      }),
      scale:dpi,
    }
    html2canvas(document.querySelector('#capture'),options).then(canvas=>{
      canvas.toBlob(blob => {
        downloadBob(blob)
      })
    })
    
    function downloadBob(blob){
      var a=document.createElement('a')
      //本地下载路径 
      var url=window.URL.createObjectURL(blob)
      //名称
      var filename='海报.png'
      //上传到后端  
      let imgurl="https://xxxx"
      const http=new axios.create()
      http.defaults.headers["Authorization"] = "xxxx";
      const formData=new FormData()
      formData.append("file",blob)
      return new Promise((resolve, reject) => {
          http({
              url:imgurl,
              data:formData,
              method:'post',
          }).then(res=>{
              resolve(res.data.data)
          }).catch(err=>{
              reject(base64)
          })
      })
      // console.log(a)
      a.href=url;
      a.download=filename
      a.click()
      window.URL.revokeObjectURL(url)
    }
  }
  </script>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值