zoukankan      html  css  js  c++  java
  • h5 分享海报 , H5+AAP 分享海报

    分享海报在浏览器中显示,安卓可以正常显示。苹果手机海报上面有一段空白,感觉图片好像有一个margin-top:50px。

    改之后代码 

    1.template中内容

    <img class="avatar_pic" :src="dataImg" @load="imgLoad" @click="sevenss" alt/>
        <div class="qrcodeposter_wrap" style="position: fixed; top: -999px;  405px; height: 720px;" id="canvasPosterActual">
          <div class="title" style="top: 49px; font-size: 24px; line-height: 24px;font-weight: 600;"> {{ posterContent }}</div>
          <div class="code" style="top: 313px; font-size: 18px; font-family: Alibaba-PuHuiTi-Medium,serif"> 邀请码:{{ userInfo.inviteCode }}</div>
          <img class="avatar_pic" :src="avatarImg" @load="imgLoad" alt/>
          <img :src="QCode()" class="codeImg" style="top: 400px" width="50%" height="25%"/>
        </div>

    2.引入插件

    import QRCode from 'qrcode' // 邀请链接生成二维码
    import html2canvas from 'html2canvas'  //canvas组件
    

    3.data中内容

    data () {
        return {
          avatarImg: require('../../assets/img/poster.png'),
          dataImg: '', //生成的 base64 图片
          urlPre: document.location.origin + '/#/register?code=',
          userInfo: {},
          isIOS: false,
          maxWidth: '50px',
          urlCode: ''
        }
      },
    

    4.创建海报  最开始canvas 创建的图片很模糊,后面加上dpi就清晰了很多。  dpi是清晰度,数值越大图片越清晰

    createPoster () {
          const poster = document.getElementById('canvasPosterActual')
          html2canvas(poster, {
            dpi: 1000, // 清晰度
            backgroundColor: '#fff',
            useCORS: true,
            scale: 2,
            async: true
    
          }).then((canvas) => {
            this.dataImg = canvas.toDataURL('image/j
          })
        },
        imgLoad () {
          // img @load事件在图片加载完成后立即执行
          this.createPoster()
        },
    

    5.链接生成二维码

     // wx 二维码
        QCode () {
          let dpr = window.devicePixelRatio
          let w = 0
          try {
            w = document.getElementById('canvasPosterActual').offsetWidth
          } catch (e) {
            console.log(e)
            w = window.innerWidth - 50
          }
          let windowWidth = window.innerWidth - 200
          let maxWidth = windowWidth
          if (w * dpr < windowWidth) {
            maxWidth = w * dpr
          }
          this.maxWidth = maxWidth
          let urlCode = ''
          QRCode.toDataURL(this.urlPre + this.userInfo.inviteCode, {
             maxWidth,
            height: maxWidth,
            margin: 1
          }, (err, url) => {
            urlCode = url
            if (err) console.log({ 'err': err })
          })
          return urlCode
        }
    

    5.保存图片,h5中手机浏览器是长按保存图片 这里是APP里点击保存图片  

    sevenss () {
          /* eslint-disable */
          //app 保存图片  浏览器中可以长按保存图片
          if(window.plus){ //检查是否是APP环境
            let base64 = this.dataImg	 // base64 图片
            // 保存到本地
            const bitmap = new plus.nativeObj.Bitmap('test')
    
            bitmap.loadBase64Data(base64, function () {
              const url = '_doc/' + new Date().getTime() + '.png' // url为时间戳命名方式
              bitmap.save(url, {
                overwrite: true // 是否覆盖
                // quality: 'quality'  // 图片清晰度
              }, (i) => {
                plus.gallery.save(i.target, function (d) {
                  // 销毁Bitmap图片
                  bitmap.clear()
                  alert('保存图片成功')
                }, function (e) {
                  // 销毁Bitmap图片
                  bitmap.clear()
                  alert('保存到系统相册失败,请尝试重新保存或截图保存')
                })
              }, function () { alert('保存失败,请尝试重新保存或截图保存') })
            })
          }
          /* eslint-disable */
        },
    

      

  • 相关阅读:
    BZOJ 1391: [Ceoi2008]order
    BZOJ 4504: K个串
    2019 年百度之星·程序设计大赛
    POJ 2398 Toy Storage (二分 叉积)
    POJ 2318 TOYS (二分 叉积)
    HDU 6697 Closest Pair of Segments (计算几何 暴力)
    HDU 6695 Welcome Party (贪心)
    HDU 6693 Valentine's Day (概率)
    HDU 6590 Code (判断凸包相交)
    POJ 3805 Separate Points (判断凸包相交)
  • 原文地址:https://www.cnblogs.com/yuanyue/p/14784979.html
Copyright © 2011-2022 走看看