IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue 制作带二维码的海报并下载 。 (html2canvas转为图片不显示文字的方法) -> 正文阅读

[JavaScript知识库]vue 制作带二维码的海报并下载 。 (html2canvas转为图片不显示文字的方法)

在这里插入图片描述

效果图如上

1.安装依赖 npm install
qrcode (生成二维码)
html2canvas (截取html元素生成图片)
2.结构

     //海报结构
    <div id="posterHtml" :style="{backgroundImage: 'url('+posterHtmlBg+')'}" v-show="false">
      //posterHtmlBg 海报背景图路径  v-show="false" 元素不需要显示在页面上
      //主标题
      <div class="cnnvasName">
        <canvas  id="canvas" width="750" height="220"></canvas>
      </div>
      //副标题
      <div class="cnnvasName">
        <canvas  id="canvasTitle" width="750" height="200"></canvas>
      </div>
      //生成的二维码
      <div id="poster">
        <canvas id="qrcodeImg" ref="qrcodeImg" width="200" height="200"></canvas>
      </div>
    </div>

3.先生成二维码

 // 生成二维码的方法
    generateQRCode(content) {
      this.showQrcode = true;
      this.$nextTick(() => {
        const canvas = this.$refs.qrcodeImg
        canvas.width = 200;
        canvas.height = 200;
        canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height);
        qrcode.toCanvas(
          canvas,
          content, //生成二维码的内容
          { //二维码样式
            width: 200,
          },
          (error) => {
              // 调用生成海报的方法
              this.createPoster()
          }
        );
      });
    },

4.生成并下载海报的方法

// 生成海报的方法
    createPoster() {
      // 生成海报
      const domObj = document.getElementById('posterHtml')
      html2canvas(domObj, {
        useCORS: true,
        allowTaint: false,
        logging: false,
        letterRendering: true,
        onclone(doc) {
          let e = doc.querySelector('#posterHtml')
          e.style.display = 'block'
        }
      }).then(function(canvas) {
        //成功后的回调函数
        var a = document.createElement("a");
        a.href = canvas.toDataURL();
        a.download = "drcQrcodePoster";
        a.click();
      })
    },

附:
主标题和副标题用canvas生成的代码

			var canvas=document.getElementById('canvas');
            var ctx=canvas.getContext("2d");
            var canvas=document.getElementById('canvasTitle');
            var ctxTitle=canvas.getContext("2d");
            ctx.textBaseline = 'top';
            ctx.fillStyle="#ffffff";
            ctx.shadowColor = 'rgba(250, 166, 120, 1)';
            ctx.shadowOffsetX = 3;
            ctx.shadowOffsetY = 5;
            ctx.shadowBlur = 2;
            ctx.font = "bold 90px SimHei";
            ctx.textAlign='center'
            ctx.fillText(data,375,110);
            ctxTitle.font = "bold 33px SimHei";
            ctxTitle.fillStyle="#ffffff";
            ctxTitle.textAlign='center'
            ctxTitle.fillText('欢迎您把'+data+'介绍给您的朋友',375,60);

我这里之所以用canvas生成标题,是因为用div插值的方式(如下),生成的图片竟然没有文字,不得已才用canvas的

<div class="cnnvasName">欢迎您把{{data}}介绍给您的朋友 </div>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:14:27  更:2022-04-09 18:17:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:34:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码