1、分别引入 qrcodejs2、html2canvas
执行以下命令行

npm install qrcodejs2
npm install html2canvas

2、下载canvas2image,切记是下载源码至本地,不是安装
2.1、`新建canvas2image.js文件夹

var Canvas2Image = function () {// 这里面放canvas2image源码
}
export default Canvas2Image`

2.2、在使用的页面引入对应的文件如下:

import QRCode from "qrcodejs2";
import html2canvas from 'html2canvas';
import Canvas2Image from '@/libs/canvas2image';

如果一定要安装:canvas2image,你可以试试,会报错导致找不到对应的Canvas2Image.convertToPNG()方法

3、DOM结构如下

<div class="main"><!-- 海报 html 元素 --><div id="posterHtml" ref="posterHtml" ><div class="posterHtml"><!-- :src="posterHtmlBg" --><imgsrc="@/assets/111.jpg"style="width:100%;height:100%"><div class="posterklass">我是文本,邀请您:</div><!-- 二维码 --><!-- <div id="qrcodeImg" v-if="postcode"></div> --><div id="qrcodeImg" ></div></div></div><div id="myCanvas" class="my_canvas"></div><span class="tip">长按保存该海报,邀请好友来测!</span></div>

4、执行脚本
4.1、生成二维码

createQrcode(text) {// 生成二维码const qrcodeImgEl = document.getElementById("qrcodeImg");qrcodeImgEl.innerHTML = "";let width = document.documentElement.clientWidth;width = width * 0.32;let qrcode = new QRCode(qrcodeImgEl, {width: width,height: width,colorDark: "#000000",colorLight: "#ffffff",correctLevel: QRCode.CorrectLevel.H});qrcode.makeCode(text);this.createPoster();},

4.2、合成海报

createPoster() {// 生成海报const that = this;// const domObj = document.getElementById("posterHtml");const domObj = that.$refs.posterHtml;var width = document.documentElement.clientWidth;var height = document.documentElement.clientHeight;var canvas = document.createElement("canvas");// 为了防止合成的图片失真,需要将图片扩大2倍;var scale = 2;canvas.width = width * scale;canvas.height = height * scale;// 由于合成的图片需要展示在当前页面;再将绘画的图片缩放canvas.getContext("2d").scale(1, 1);var opts = {scale: scale,canvas: canvas,logging: true,width: width,height: height,useCORS: true,allowTaint: false,logging: false,letterRendering: true,};html2canvas(domObj, opts).then(function(canvas) {var context = canvas.getContext("2d");// 重要 关闭抗锯齿context.mozImageSmoothingEnabled = false;context.webkitImageSmoothingEnabled = false;context.msImageSmoothingEnabled = false;context.imageSmoothingEnabled = false;var img = Canvas2Image.convertToPNG(canvas,canvas.width,canvas.height);// Canvas2Image.saveAsPNG(canvas, canvas.width, canvas.height)that.postshow = false;that.postcode = false;// img.style.width = canvas.width / 2 + "px";// img.style.height = canvas.height / 2 + "px";img.style.width = '100%';img.style.height = '100%';img.style.position = "absolute";img.style.top = "0px";img.style.left = "0px";document.getElementById("myCanvas").appendChild(img);that.$nextTick(() => {let e =  document.querySelector("#posterHtml");e.style.display = "none";})});}

4.2.1、生成海报注意事项:
a、创建的canvas宽高一定要记得扩大一倍;
如:

`var canvas = document.createElement("canvas");// 为了防止合成的图片失真,需要将图片扩大2倍;var scale = 2;canvas.width = width * scale;canvas.height = height * scale;`

b、为了展示在当前手机屏幕中,(合成图片自适应);
需要将图片缩放。如:

// 由于合成的图片需要展示在当前页面;再将绘画的图片缩放canvas.getContext("2d").scale(1, 1);

vue 中生成二维码,合成海报相关推荐

  1. Vue中生成二维码的一种方式—vue-qr

    Vue中生成二维码的一种方式-vue-qr vue实现二维码生成(vue + vue-qr)

  2. 生成二维码合成海报并下载

    生成二维码,选择一张海报,然后生成二维码并下载, 主要代码 生成二维码代码 ///生成二维码var qrcode = new QRCode("qrcode");// 生成二维码的方 ...

  3. vue中 生成二维码 并自动批量下载

    项目中经常又这样的需求,要求将字符串生成二维码,并下载下来 一般分为 生成一个二维码展示并下载,对于这种你只需调用 qrcodejs2生成二维码就可以了 下载也是按钮触发 今天我们要说的是 批量下载, ...

  4. 在Vue中生成二维码扫描在手机上跳转页面

    使用方法: 安装vue-qr npm install vue-qr --save 在components新建一个vue组件,eg:vueQr.vue (以下为组件完整代码) <template& ...

  5. 在Vue中生成二维码(前端生成二维码:Qrcode)

    1.首先我们需要使用"npm install --save qrcode"下载依赖包 npm install --save qrcode 2.在要使用qrcode的页面导入qrco ...

  6. Vue项目生成二维码

    场景: [民主测评.闭卷测试] Vue项目生成二维码,使用手机浏览器扫码录入答题 一,创建vue项目,样式布局,接口联调, npm run build 打包成dist 文件,让后台发送到服务器中,页面 ...

  7. 【工具】Vue中生成二维码组件——vue-qr

    [工具]Vue中生成二维码组件--vue-qr npm地址--https://www.npmjs.com/package/vue-qr 注:不支持IE浏览器 效果 1.安包 npm install v ...

  8. Vue批量生成二维码并分页打印,组件形式实现

    Vue批量生成二维码并分页打印,组件形式实现 一. 最终效果 二. 实现方式 一. 最终效果 二. 实现方式 安装qrcodejs2插件: // 终端执行 npm install qrcodejs2 ...

  9. 在java中生成二维码,并直接输出到jsp页面

    在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat 它的原理是:在加载页面时,根据img的src(c ...

最新文章

  1. datatable自动增加序号
  2. 【机器学习】HOG+SVM进行车辆检测的流程及源码
  3. 【LeetCode之C#解法】 移动零、爬楼梯
  4. 【Android】EditText标签调用键盘
  5. HBase实践案例:车联网监控系统
  6. cocos creator 多张图片 椭圆运动_信阳液位测量图片
  7. CentOS下MFS分布式文件系统搭建
  8. 终于搞定了cxgrid的多行表头(转终于搞定了cxgrid的多行表头 )
  9. CTR点击率预估实战分享
  10. 谷歌验证码 ReCaptcha 破解
  11. 华为OD岗位面试流程及总结
  12. topo排序判环实操
  13. 【agora】 Agora Media SDK : aut transport
  14. 浙江大学计算机学院 耿卫东教授 是哪个实验室的,文化与科技的碰撞:2018首届中国文化计算大会在京举行...
  15. TextView与EditText
  16. jpg和rar格式转换
  17. 网安之php开发第十三天
  18. ESP8266开发之旅 应用篇⑤ WiFi探针
  19. 2023年智能无人系统与人工智能国际会议(SIUSAI 2023) | IOP-JPCS出版
  20. 【Linux学习】基础IO

热门文章

  1. SCTF-Misc400B
  2. Abaqus对复合材料进行建模的三种方式的对比
  3. RedHat6 挂载FC存储创建LVM
  4. 四月电商战 京东突围与苏宁国美当当再围剿
  5. 深度优先搜索是什么?
  6. Java钉钉markdown模版,钉钉 dingding dingtalk prometheus报警模板template
  7. 【深入UCSC Genome Brower】写在前面
  8. 与2,3,5无关的数
  9. LeetCode题解:Balanced Binary Tree
  10. 保监会:大数据对保险业改革创新及保险监管影响研究