Vue使用vue-qr组件生成二维码&&实现二维码下载功能

文章介绍了如何在Vue项目中安装和使用vue-qr组件来生成并下载二维码。首先,通过yarn或npm安装组件,然后在单页面或全局范围内引入。接着,展示了实现点击下载二维码的方法,通过创建并触发自定义a标签的点击事件完成下载。最后,提供了包含二维码生成和下载功能的示例代码。
摘要由CSDN通过智能技术生成

效果图:(不涂鸦,图片违规)

 

1、安装 vue-qr组件:

yarn vue-qr --save
或者
npm install vue-qr --save

 2、页面挂载使用:(也可以在main.js全局挂载)

  !!!单页面引入:

import vueQr from 'vue-qr';
export default {
	components: {
		vueQr
	},
}

!!!全局挂载引入:

import VueQr from 'vue-qr'
new Vue({
    components: {VueQr}
})

3、实现点击下载方法:

methods: {
	download(sourceName) { //下载
        //const iconUrl = this.$refs['qrCode' + sourceName].$el.src //2021年做项目写
		const iconUrl = this.$refs['qrCode' + sourceName][0].$el.src //2023年修改
		const a = document.createElement('a') //自定义a标签
		const event = new MouseEvent('click') //自定义鼠标点击事件
		a.download = sourceName
		a.href = iconUrl
		a.dispatchEvent(event) //触发自定义事件
	},
}

4、案例代码:

<template>
	<div class="row wraps">
		<div class="column center" style="margin:12px;" v-for="(row,index) in DataList" :key="index">
			<vue-qr :ref="'qrCode'+ row.sourceName" :logoSrc="row.logoSr" :text="row.text" :size="200"
				:correctLevel='row.correctLevel'></vue-qr>
			<div style="color: coral; cursor: pointer;margin-top: 10px;" @click="download(row.sourceName)">点击下载</div>
		</div>
	</div>
	<!--  !!!!配置属性!!!!
	 text	编码内容
	 correctLevel	容错级别
	 size	尺寸, 长宽一致, 包含外边距
	 margin	二维码图像的外边距, 默认 20px
	 colorDark	实点的颜色
	 colorLight	空白区的颜色
	 bgSrc	欲嵌入的背景图地址
	 gifBgSrc	欲嵌入的背景图 gif 地址,设置后普通的背景图将失效。设置此选项会影响性能
	 backgroundColor	背景色
	 backgroundDimming	叠加在背景图上的颜色, 在解码有难度的时有一定帮助
	 logoSrc	嵌入至二维码中心的 LOGO 地址
	 logoScale	用于计算 LOGO 大小的值, 过大将导致解码失败, LOGO 尺寸计算公式 logoScale*(size-2*margin), 默认 0.2
	 logoMargin	LOGO 标识周围的空白边框, 默认为0
	 logoBackgroundColor	Logo 背景色,需要设置 logo margin
	 logoCornerRadius	LOGO 标识及其边框的圆角半径, 默认为0
	 whiteMargin	若设为 true, 背景图外将绘制白色边框
	 dotScale	数据区域点缩小比例,默认为0.35
	 autoColor	若为 true, 图像将被二值化处理, 未指定阈值则使用默认值
	 binarizeThreshold	(0 < threshold < 255) 二值化处理的阈值
	 callback	生成的二维码 Data URI 可以在回调中取得,第一个参数为二维码 data URL, 第二个参数为 props 传过来的 qid(因为二维码生成是异步的,所以加个 id 用于排序)
	 bindElement	指定是否需要自动将生成的二维码绑定到HTML上, 默认是TRUE
	 -->
</template>

<script>
	import vueQr from 'vue-qr';
	export default {
		components: {
			vueQr
		},
		data() {
			return {
				DataList: [{
					sourceName: '1001', //名编号
					logoSr: 'https://gtms03.alicdn.com/tps/i3/TB1yeWeIFXXXXX5XFXXuAZJYXXX-210-210.png_80x80.jpg', //二维码中间图片
					text: 'https://blog.csdn.net/2201_75870706?type=blog', //编码内容
					size: 200, //尺寸, 长宽一致, 包含外边距
					correctLevel: 2, //容错级别
				},{
					sourceName: '1002', //名编号
					logoSr: '', //二维码中间图片
					text: 'https://blog.csdn.net/2201_75870706?type=blog', //编码内容
					size: 220, //尺寸, 长宽一致, 包含外边距
					correctLevel: 3, //容错级别
				}]
			}
		},
		methods: {
			download(sourceName) { //下载
				const iconUrl = this.$refs['qrCode' + sourceName][0].$el.src
				const a = document.createElement('a') //自定义a标签
				const event = new MouseEvent('click') //自定义鼠标点击事件
				a.download = sourceName
				a.href = iconUrl
				a.dispatchEvent(event) //触发自定义事件
			},
		}
	}
</script>

<style lang="scss" scoped>

</style>

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
可以使用以下步骤来批量生成二维码下载: 1. 安装 vue-qr 依赖 使用 npm 命令进行安装: ``` npm install vue-qr --save ``` 2. 编写组件Vue 组件中引入 vue-qr使用 v-for 循环生成多个二维码,并添加下载功能。 ``` <template> <div> <div v-for="(item, index) in qrList" :key="index"> <img :src="item" /> <button @click="downloadQR(index)">下载二维码</button> </div> </div> </template> <script> import VueQr from 'vue-qr' export default { data() { return { qrList: ['http://www.example.com/qr1', 'http://www.example.com/qr2', 'http://www.example.com/qr3'] } }, components: { VueQr }, methods: { downloadQR(index) { const link = document.createElement('a') link.href = this.qrList[index] link.download = `qr-${index}.png` document.body.appendChild(link) link.click() document.body.removeChild(link) } } } </script> ``` 3. 生成二维码组件使用 VueQr 组件生成二维码: ``` <vue-qr :value="item"></vue-qr> ``` 其中,`:value` 属性绑定的是二维码的内容。 4. 下载二维码下载按钮的点击事件中,使用 JavaScript 中的 download 属性来下载二维码。代码如下: ``` downloadQR(index) { const link = document.createElement('a') link.href = this.qrList[index] link.download = `qr-${index}.png` document.body.appendChild(link) link.click() document.body.removeChild(link) } ``` 其中,`this.qrList[index]` 表示当前二维码的链接,`qr-${index}.png` 表示下载的文件名。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值