• 画布 多张图片合成二维码推广图


    本最开始使用的是引用的  "html2canvas" ,但tm调来跳去各种问题。

    最后直接换成画布操作 ,我这里是采用的VUE

    注意事项:图片链接和网站 http 协议一致,如果网站是http就图片链接开头就用http,若是s就用s ,否则将失败。我其实猜测 html2canvas 没有成功的原因可能也可能是这个原因,具体还要去试验

    废话不多说上完整代码  
    <template>
      <div>
              <div class="tuiguanghead" @click="backTo">
            <div >
              <van-icon name="arrow-left" />
            </div>
          </div>
        <img id="bg" v-show="!makePic"  :src="bgPic" alt srcset />
        <img id="code" v-show="!makePic" :src="materialUrl" alt srcset />
        <div>
          <img v-show="makePic" :src="makePic" alt srcset />
        </div>
        <div>
        </div>
      </div>
    </template>
    <script>
    
    export default {
      data () {
        return {
          bgPic: require('@/assets/images/hytg.jpg'),
          materialUrl: '',//require('@/assets/images/dizhi.png'),
          makePic: ''
        }
      },
      created () {
        this.getdata();
      },
      mounted () {
        setTimeout(() => {
              this.drawProdPicture();
        }, 1000);
    
      },
      methods: {
         backTo () {
          if (this.back) {
            this.$router.push(this.back)
          } else {
            this.$router.back(-1)
          }
        },
        getdata () {
          var that =  this;
          this.$get('/user/Extension_qrcode', {
          }).then(res => {
            if (res.code === 200) {
                that.materialUrl = res.data.url
            }
          })
        },
        drawProdPicture () {
          let img1 = new Image()
          img1.src = this.bgPic
          var bg = document.getElementById("bg").getBoundingClientRect();
          img1.width = bg.width
          img1.height = bg.height
          img1.setAttribute('crossOrigin', 'anonymous')
          let canvas = document.createElement("canvas")
          let context = canvas.getContext("2d")
          canvas.width = img1.width
          canvas.height = img1.height
          let img2 = new Image()
          let flag = true
           var code = document.getElementById("code").getBoundingClientRect();
          // 将 img1 加入画布
          img1.onload = () => {
            context.drawImage(img1, 0, 0, bg.width,bg.height)
            img2.src = this.materialUrl
            img2.setAttribute('crossOrigin', 'anonymous')
            img2.width = code.width
            img2.height = code.height
            if (flag) {
              flag = false
            } else {
              let src = canvas.toDataURL()
              this.makePic = src
            }
          }
          var right = document.body.clientWidth-(document.body.clientWidth*0.67)
          var top = document.body.clientHeight-(document.body.clientHeight*0.49)
          // 将 img2 加入画布
          img2.onload = () => {
            context.drawImage(img2, right, top, code.width, code.height)
            if (flag) {
              flag = false
            } else {
              let src = canvas.toDataURL('image/png')
              this.makePic = src
            }
          }
    
        }
      }
    }
    </script>
    <style  lang="scss" scoped>
    .tuiguanghead {
      z-index: 2;
      padding-left: 0.3rem;
      padding-top: 0.3rem;
      position: fixed;
      div {
        display: flex;
        justify-content: center;
        align-items: center;
         0.6rem;
        height: 0.6rem;
        border-radius: 50%;
        background-color: rgba(0, 0, 5, 0.3);
        i {
          font-size: 0.32rem;
          color: #f5f5f5;
        }
      }
    }
    #bg{
       100%;
      height: 100%;
    }
    #code{
      position: absolute;
      bottom: 4rem;
      left: 2.5rem;
       2.4rem;
    }
    </style>

      

  • 相关阅读:
    重构29-Remove Middle Man(去掉中间人)
    重构30-Return ASAP(尽快返回)
    重构26-Remove Double Negative(去掉双重否定)
    yaml语法学习3
    运行原理探究2
    SpringBoot简介 1
    SpringMVC项目所引用的一切依赖jar包和自定义设置
    2020/07/03 初始mybatis
    json数据格式字符串在java中的转移
    项目中遇到的一些异常
  • 原文地址:https://www.cnblogs.com/super-ldc/p/15554217.html
Copyright © 2020-2023  润新知