自己整理的vue实现生成分享海报(含二维码),看着网上的没实现

news/2024/5/4 7:12:14/文章来源:https://blog.csdn.net/qq_34137397/article/details/128431162

大家好,我是雄雄。

在这里插入图片描述

前言

相信大家在许多的场景下,看到过这样的案例。

  1. 当我们在某购物app上看好一件商品,想分享给别人时,app会给我们生成一张海报,我们将其保存在手机里面转发给其他人达到分享。
  2. 当我们逛CSDN的时候,想要将某篇有营养的文章分享给别人时,也会生成一张好看的海报,用户只需一扫码,既能跳转到相应页面浏览。
  3. 在某些个人博客,比如:穆雄雄的博客中,我们看到某篇正合胃口的文章,想要分享给别人怎么办?也会生成一张精美小海报,然后随便转发。

今天,我们就来看看,如何使用vue实现精致海报的分享。

效果图

在这里插入图片描述

在这里插入图片描述

类似这样的吧,下面的是CSDN的,上面的是我自己做的,可能不如CSDN做的专业,但是我的那种,你的背景图片是可以自己换的,所以如果你的审美比较好,那么你可以自己设计一个背景图,或者多张进行随机切换,我这边就是提供一下实现思路。

右下角是这篇文章的二维码,一扫就自动跳转过来了。

实现思路

  1. 准备一张精美的背景图,比如我这样的。(也可以准备多张,实现随机切换,实现代码我明天放上来),我的放在了七牛云里面了,大家也可以直接放在本地。
    在这里插入图片描述
  2. 将当前内容生成一个二维码,放在右下角的位置,技术:qrcodejs2
  3. html转换成canvas,技术:html2canvas
  4. 按照自己想要的格式调整下样式即可。

其实思路,我看网上大家都是这么说的,我确实也是这么做的,但是按照网上的代码,确实也没有实现出来,所以自己写了个。

代码实现

  1. 安装qrcodejs2以来
npm i qrcodejs2

在这里插入图片描述
2. 安装html2canvas依赖

npm i html2canvas

在这里插入图片描述
3. 在需要生成海报的页面,分别导入这两个依赖。

/*引入二维码*/
import QRCode from "qrcodejs2";
//html转换成canvas
import html2canvas from "html2canvas";
  1. 在页面上写个div,用来存放海报的,我这是放在了el-dialog里面了,各人有各人的需求。
<!--分享海报的弹出层--><el-dialogwidth="20%"height="200px"center:visible.sync="dialogFengXiang"><!-- 海报html元素 --><div id="posterHtml" v-show="isShowBg"><div class="fx_content "><span style="color: #000000;font-size: 16px">{{ posterTitle }}</span><p style="font-size: 12px;">关注微信订阅(公众)号【雄雄的小课堂】;<br />博客网址:https://www.穆雄雄.com</p></div><!-- 二维码 --><div id="qrcodeImg" ref="qrcodeImg"></div></div></el-dialog>
  1. 大致设置一下样式吧,在style里面写:
/*分享的内容*/
.fx_content {width: 70%;float: left;margin: 109% 0 0 2%;
}
/*整个海报*/
#posterHtml {background-image: url(https://blogobs.88688.team/blog/fx-bg1.png);background-repeat: no-repeat;width: 100%;height: 450px;background-size: 100% 450px;margin: 0;padding: 0;
}
/*二维码*/
#qrcodeImg {width: 25%;height: 150px;float: right;margin-top: 108%;
}
  1. data中声明变量:
 data: function() {return {// 文案标题posterTitle: "",// 文案内容posterContent: "",// 最终生成的海报图片posterImg: "",isShowBg: false,//是否显示对话框dialogFengXiang: false};},
  1. methods中实现两个功能,生成二维码和生成海报:
//分享的功能fenxiang() {this.createPoster();this.createQrcode();this.dialogFengXiang = true;},// 生成二维码createQrcode() {this.$refs.qrcodeImg = "";setTimeout(() => {// 生成二维码new QRCode(this.$refs.qrcodeImg, {text: this.articleHref,width: 75,height: 75,colorDark: "#000000",colorLight: "#ffffff",correctLevel: QRCode.CorrectLevel.H});}, 200);// qrcode.makeCode(text);},//生成海报createPoster() {// 生成海报const vm = this;//重新弄一下标题//let content = this.article.content.substring(0,110);/*let content = "";this.posterContent = content+"....";*/this.posterTitle = this.article.title.substring(0, 12) + "....";const domObj = document.getElementById("posterHtml");//显示海报this.isShowBg = true;html2canvas(domObj, {useCORS: true,allowTaint: false,logging: false,letterRendering: true,onclone(doc) {let e = doc.querySelector("#posterHtml");e.style.display = "block";}}).then(function(canvas) {// 在微信里,可长按保存或转发vm.posterImg = canvas.toDataURL("image/png");});},

当然,这里面的部分代码也是从网上看的别人的,拼拼凑凑出来的,我在他们的基础上改了改。
然后我们就实现生成海报的功能啦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_240134.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.25日周报

周报 代码行数&#xff1a; 周一 704 周二 481 周三 571 周四 589 周五 595 周六 520 周日 537 遇到的问题&#xff1a; 没用过的方法AtomicInteger Insert Proto currentTimeMillis RequestParam BufferedReader UriComponents RestTemplate OSS 不清楚在…

Windows和Mac系统实现本地部署WebPageTest工具

在项目开发或者测试的过程中&#xff0c;由于没有上线&#xff0c;我们在公网上无法访问我们的网站&#xff0c;但同时我们又需要查看浏览器性能&#xff0c;这样我们就需要在本地部署WebPageTest工具以协助进行性能测试 具体实现步骤&#xff1a; Windows系统&#xff1a; …

【高级篇04】MySQL逻辑架构

文章目录第四章&#xff1a;逻辑架构逻辑架构SQL执行流程数据库缓冲池第四章&#xff1a;逻辑架构 逻辑架构 第一层&#xff1a;连接层。客户端访问MySQL服务器&#xff0c;首先建立TCP连接&#xff0c;经过三次握手建立连接成功后&#xff0c;MySQL服务器对TCP传输过来的账号…

PHP开发工具PhpStorm v2022.3——完全支持PHP 8.2

PhpStorm是一个轻量级且便捷的PHP IDE&#xff0c;其旨在提高用户效率&#xff0c;可深刻理解用户的编码&#xff0c;提供智能代码补全&#xff0c;快速导航以及即时错误检查。可随时帮助用户对其编码进行调整&#xff0c;运行单元测试或者提供可视化debug功能。 PhpStorm v20…

excel数据处理技巧:组合函数统计产品批号

这是一个看似普通的编号问题&#xff0c;可竟然动用了TEXT和SUMPRODUCT两个重量级的函数共同出手才得以解决。以往遇到的编号问题&#xff0c;大多数都是COUNTIF的拿手好戏&#xff0c;但是今天这个问题COUNTIF完全插不上手&#xff0c;来看看模拟的数据吧。 如图所示&#xff…

循环神经网络-基础篇Basic-RNN

循环神经网络-基础篇Basic-RNN 我们把全连接网络也叫做稠密网络DNN&#xff0c;其中X1到X8是不同样本的特征 而本文介绍的循环神经网络RNN主要处理的是具有序列关系的输入数据&#xff0c;即前面的输入和后面的输入是有关系的。例如天气&#xff0c;股市&#xff0c;金融数据和…

ES6 模块化、webpack、@ 代表src目录的设置

文章目录webpackSource Map 代表src目录的设置ES6 模块化要求默认 导出默认导入按需 导出、导入混合使用直接导入 并执行模块中的代码webpack 默认 约定&#xff1a; 自定义 打包的 入口与出口 const path require(path) // 导入node.js中 专门操作路径的模块 module.expor…

哺乳时宝宝一边吃奶,另一边却自动流出来,这是怎么回事?

别人眼中的母乳喂养只是简单地把宝宝抱在怀里&#xff0c;让宝宝吃饱&#xff0c;超级简单。事实上&#xff0c;有很多母乳喂养。“麻烦事”比如母乳不足、堵奶、乳腺炎等&#xff0c;甚至更多“简单”漏奶会让宝宝头疼。有些妈妈很幸运&#xff0c;不知道什么是漏奶&#xff0…

基于Java+SpringBoot+vue等疫情期间网课管理系统详细设计和实现

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取联系&#x1f345;精彩专栏推荐订阅收藏&#x1f447;&…

Git Bash Here和RStudio软件的问题解决

Git Bash Here和RStudio软件的问题解决 文章目录Git Bash Here和RStudio软件的问题解决0、 写在前面1、Git软件在任务栏图标空白2、RStudio软件2.1 警告信息InormalizePath(path.expand(path),winslash,mustWork)2.2 incomplete final line found by readTableHeader on报错3、…

为啥devc++程序运行正确返回不为0?而返回了一个特别大的数,详解。

例如运行以下程序: #include #include typedef char ElemType; typedef struct BiTNode{ char data; struct BiTNode *lchild; struct BiTNode *rchild; int DescNum;}BiTNode ,*BiTree; void CreateBiTree(BiTree *T) { char ch; scanf("%c",&ch); if(ch ){…

力扣(LeetCode)207. 课程表(C++)

拓扑排序 根据示例看出&#xff0c;课程表是否存在环&#xff0c;是问题的关键。这题的环&#xff0c;和数组、链表的环不一样&#xff0c;不好判&#xff0c;要转化成图判拓扑序列。 考虑向右和向左的方向&#xff0c;拓扑序列的所有边可以指向同一方向。 无环图进行重排序…

第一章:绪论

一、数据库系统概述 1、【单选题】记录内有结构&#xff0c;整体无结构&#xff0c;属于计算机发展过程的哪一阶段 正确答案&#xff1a; C 2、【单选题】数据库系统最小访问单位是 正确答案&#xff1a; C 3、【多选题】数据库管理系统提供的数据控制功能包括 正确答案&…

不写一行代码(三):实现安卓基于i2c bus的Slaver设备驱动

文章目录一、前言二、系列文章三、准备工作3.1 挑选I2C引脚3.2 测试设备&#xff1a;QMI8658C四、编写设备树节点4.1 查找MUX4.2 修改i2c1引脚配置4.2.1 修改前4.2.2 修改后五、编译、烧录dt.img5.1 烧录后效果六、编写test程序6.1 创建文件6.2 源码&#xff1a;Android.mk6.3 …

Docker常用操作命令总结(一)

文章目录一、Docker的应用场景二、Docker 的优点三、Docker 架构四、安装Docker1、更新 apt 包索引2、安装docker3、安装完成之后&#xff0c;运行命令sudo docker info&#xff0c;检查安装状态4、有可能&#xff0c;第一次需要手动启动服务.就需要执行下面的命令&#xff0c;…

图像处理:制作你的专属卡通头像和LOGO(圣诞节特别篇)

目录0 前言1 安装与贴图2 算法原理2.1 计算像素频率2.2 计算像素相对距离2.3 计算合适贴图3 配置功能4 使用&#xff1a;以圣诞老人为例0 前言 Tiler是一种使用各种其他较小图像平铺创建新图像的工具&#xff0c;它与其他马赛克工具不同&#xff0c;因为它可以适应多种形状、大…

基于Xlinx的时序分析与约束(5)----衍生时钟约束

衍生时钟约束语法 衍生时钟&#xff08;Generated Clocks&#xff0c;又称为生成时钟&#xff09;是指由设计中已有的主时钟通过倍频、分频或者相移等操作后产生的新的时钟信号&#xff0c;如由MMCM或PLL或由组合逻辑生成的倍、分频时钟信号。 衍生时钟约束必须指定时钟源&…

【正点原子I.MX6U-MINI移植篇】rootfs移植过程详解(三)

Linux三巨头己经完成了2个了&#xff0c;就剩最后一个rootfs&#xff08;根文件系统&#xff09;了&#xff0c;根文件系统的组成以及如何构建根文件系统是Liux移植的最后一步&#xff0c;根文件系统构建好以后就意味着我们己经拥有了一个完整的、可以运行的最小系统。以后我们…

程序员高手解决问题,都是从正确的提问开始

回顾各大技术网站、社区、问答&#xff0c;我们发现&#xff1a;真正的程序员高手都极度擅长提问。 好的提问不但能得到建设性的解决方案&#xff0c;更加能激发人们的好奇心、创造力和学习的动力。 毫不夸张地说&#xff0c;会提问的程序员一开口就赢了&#xff01; 所以今…

QT基本组件与常用类

目录 一、设计师 Designer&#xff08;掌握&#xff09; 二、布局 Layout 2.1 布局的基本使用&#xff08;掌握&#xff09; 2.2 布局属性&#xff08;掌握&#xff09; 2.3 伸展器&#xff08;掌握&#xff09; 2.4 嵌套&#xff08;掌握&#xff09; 2.5 伸展与策略&#xff…