vue将二维码做成名片,并且生成图片保存

2024-08-28 15:36

本文主要是介绍vue将二维码做成名片,并且生成图片保存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

效果图

在这里插入图片描述

1. 安装html2canvas

首先,你需要在你的Vue项目中安装html2canvas。你可以通过npm或yarn来安装它:

npm install html2canvas  
# 或者  
yarn add html2canvas

2.组件形式

2.1 创建组件

在你的Vue项目中,创建一个新的Vue组件,比如BusinessCard.vue,用来展示名片并处理图片的保存。

<template>  <div class="business-card-container" ref="businessCard">  <div class="qrcode-container">  <img :src="qrcodeSrc" alt="QR Code" class="qrcode">  </div>  <div class="info">  <h2>{{ name }}</h2>  <p>{{ position }}</p>  <p>联系电话:{{ phone }}</p>  <p>邮箱:{{ email }}</p>  </div>  <button @click="saveAsImage">保存为图片</button>  </div>  
</template>  <script>  
import html2canvas from 'html2canvas';  export default {  data() {  return {  qrcodeSrc: 'path/to/your/qrcode.png', // 你的二维码图片路径  name: '张三',  position: '软件工程师',  phone: '123-456-7890',  email: 'zhangsan@example.com',  };  },  methods: {  async saveAsImage() {  try {  const canvas = await html2canvas(this.$refs.businessCard, {  scale: 2, // 可以根据需要调整缩放比例  useCORS: true, // 如果二维码图片是跨域的,需要设置这个选项  });  // 创建一个链接,点击时下载图片  const link = document.createElement('a');  link.download = 'business-card.png';  link.href = canvas.toDataURL('image/png');  link.click();  // 可选:显示一些成功的消息  alert('名片已保存为图片!');  } catch (error) {  console.error('保存图片失败:', error);  alert('保存图片时发生错误!');  }  },  },  
};  
</script>  <style scoped>  
.business-card-container {  display: flex;  align-items: center;  justify-content: space-between;  padding: 20px;  border: 1px solid #ccc;  width: 300px;  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);  
}  .qrcode-container {  width: 100px;  height: 100px;  overflow: hidden;  display: flex;  justify-content: center;  align-items: center;  
}  .qrcode {  width: 100%;  height: auto;  max-width: 100%;  max-height: 100%;  
}  .info {  flex: 1;  padding-left: 20px;  
}  
</style>

2.2 使用组件

在你的Vue应用的某个页面或组件中,引入并使用BusinessCard组件。

<template>  <div>  <BusinessCard />  </div>  
</template>  <script>  
import BusinessCard from './components/BusinessCard.vue';  export default {  components: {  BusinessCard,  },  
};  
</script>

3.非组件形式

首先,确保你已经通过npm或yarn安装了html2canvas,然后使用以下代码

<template>  <div>  <!-- 名片内容 -->  <div id="businessCard" class="business-card-container">  <div class="qrcode-container">  <img :src="qrcodeSrc" alt="QR Code" class="qrcode">  </div>  <div class="info">  <h2>{{ name }}</h2>  <p>{{ position }}</p>  <p>联系电话:{{ phone }}</p>  <p>邮箱:{{ email }}</p>  </div>  <button @click="saveAsImage">保存为图片</button>  </div>  </div>  
</template>  <script>  
// 引入html2canvas  
import html2canvas from 'html2canvas';  export default {  data() {  return {  qrcodeSrc: 'path/to/your/qrcode.png', // 你的二维码图片路径  name: '张三',  position: '软件工程师',  phone: '123-456-7890',  email: 'zhangsan@example.com',  };  },  methods: {  saveAsImage() {  // 使用html2canvas将DOM元素渲染成Canvas  html2canvas(document.getElementById('businessCard'), {  scale: 2, // 缩放比例  useCORS: true, // 如果二维码图片是跨域的,需要设置这个选项  }).then(canvas => {  // 将Canvas转换为图片并触发下载  const imageUrl = canvas.toDataURL('image/png');  const link = document.createElement('a');  link.download = 'business-card.png';  link.href = imageUrl;  link.click();  // 可选:显示一些成功的消息  alert('名片已保存为图片!');  }).catch(error => {  console.error('保存图片失败:', error);  alert('保存图片时发生错误!');  });  },  },  
};  
</script>  <style scoped>  
.business-card-container {  display: flex;  align-items: center;  justify-content: space-between;  padding: 20px;  border: 1px solid #ccc;  width: 300px;  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);  
}  .qrcode-container {  width: 100px;  height: 100px;  overflow: hidden;  display: flex;  justify-content: center;  align-items: center;  
}  .qrcode {  width: 100%;  height: auto;  max-width: 100%;  max-height: 100%;  
}  .info {  flex: 1;  padding-left: 20px;  
}  
</style>

说明

以下示例代码和效果图不一致,具体需要根据指定需求来决定

这篇关于vue将二维码做成名片,并且生成图片保存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115166

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D