uniapp——实现二维码生成+保存二维码图片——基础积累

2023-09-19 12:00:35

最近在做二维码推广功能,自从2020年下半年到今天,大概有三年没有用过uniapp了,而且我之前用uniapp开发的程序还比较少,因此很多功能都浪费了很多时间去查资料,现在把功能记录一下。

效果图

在这里插入图片描述
下面介绍一下整体流程:

1.根据接口返回的链接生成二维码——uv-Qrcode的用法

1.1 插件市场导入uv-qrcode插件

uv-qrcode插件市场链接:https://ext.dcloud.net.cn/plugin?id=12479
在这里插入图片描述
点击下载插件并导入HBuilderX
选择到要导入的项目,然后即可导入成功。

导入后的路径地址:
在这里插入图片描述

1.2 当前页面引入uvQrcode
import uvQrcode from '@/uni_modules/uv-qrcode/components/uv-qrcode/uv-qrcode.vue';
1.3 html代码使用uvQrcode
<uv-qrcode ref="qrcode" canvas-id="qrcode" :value="value" size="300rpx" :loading="loading"
:options="options"></uv-qrcode>

1.carvas-id:唯一的id值,可以用于获取元素
2.value:二维码的内容
3.size:二维码的大小,可以支持数值和字符串,字符串的话支持px和rpx,由于我此处是uniapp,因此写成字符串的rpx单位
4.loading:加载中,可以在生成二维码时展示加载中的效果
5.options:配置内容,包含边框 背景颜色 前景logo等

1.4 options配置
options: {
	useDynamicSize: false,
	errorCorrectLevel: 'Q',
	margin: 10,
	areaColor: "#fff",
	// 指定二维码前景,一般可在中间放logo
	foregroundImageSrc: require('static/image/logo.png')
}

详细内容可以参考:https://uqrcode.cn/doc/document/native.html#%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE

1.5 生成二维码

在这里插入图片描述
在代码中的应用:

this.value = "https://www.baidu.com";
this.$nextTick(() => {
	this.$refs.qrcode.remake({
		success: () => {
			console.log('生成成功');
		},
		fail: err => {
			console.log(err)
		}
	});
})

2.长按保存二维码

2.1 html代码部分
<view class="codeCls" @longpress="longpress">
	<uv-qrcode ref="qrcode" canvas-id="qrcode" :value="value" size="300rpx" :loading="loading" 
	:options="options"></uv-qrcode>
</view>
<view class="tipCls">长按图片即可保存</view>
2.2 长按方法——longpress——自定义h5app的保存方法

此处我做了处理,如果是app则长按就保存到相册,如果是h5,则我会直接下载二维码:

此处需要先用到一个toTempFilePath的方法:
在这里插入图片描述
需要将二维码内容转为临时文件路径后,再进行保存。

longpress() {
	//#ifdef H5
	this.$refs.qrcode.toTempFilePath({
		success: res => {
			console.log(111, res);
			const aEle = document.createElement('a');
			aEle.download = 'uQRCode'; // 设置下载的文件名,默认是'下载'
			aEle.href = res.tempFilePath;
			document.body.appendChild(aEle);
			aEle.click();
			aEle.remove(); // 下载之后把创建的元素删除
		}
	});
	//#endif
	// #ifdef APP-PLUS
	this.$refs.qrcode.toTempFilePath({
		success: res => {
			console.log(111, res);
			uni.saveImageToPhotosAlbum({
				filePath: res.tempFilePath,
				success: () => {
					uni.hideLoading();
					uni.showToast({
						title: "图片已保存"
					});
				},
				fail: () => {
					uni.hideLoading();
					uni.showToast({
						icon: 'none',
						title: "图片保存失败"
					});
				}
			});
		}
	});
	// #endif
},
2.3 长按方法——longpress——通过qrcodesave方法来实现

另外还有一个方法:就是直接用save方法:
在这里插入图片描述
但是用这个方法测试发现:app上没有问题,但是在h5上,则会出现弹窗:
在这里插入图片描述
这样就出现了重复,而且提示保存成功,保存的路径无从得知。
因此还是使用上面的根据apph5区分处理会比较好。

*后来发现,h5不会自动保存的时候下载是因为没有进行下面三个参数的设置*,设置后即可实现h5的下载。
在这里插入图片描述

完成!!!多多积累,多多收获!!!

更多推荐

【面试题】——Java基础篇(35题)

文章目录1.八大基本数据类型分类2.重写和重载的区别3.int和integer区别4.Java的关键字5.什么是自动装箱和拆箱?6.什么是Java的多态性?7.接口和抽象类的区别?8.Java中如何处理异常?9.Java中的final关键字有什么作用?10.什么是Java的序列化和反序列化?11.Java中的Strin

下一个时代的船舵,李彦宏握住AI原生应用

相信大家都能感觉到,科技企业和开发者们正在积极转动航向,投身汹涌澎湃的大模型浪潮。越来越多基于大模型的AI应用和插件被推出,但从整体比例上看,AI原生应用的数量规模,远算不上百花齐放。可以回想一下历史上的技术革命,所有科技成果进入生活,靠的是一大群人充分释放智慧和想象力。电气化时代,商场里摆满了让人眼花缭乱的家用电器,

睿趣科技:新手商家如何做好抖音店铺

抖音,作为全球热门的社交媒体平台之一,不仅仅是分享有趣视频的地方,也是许多商家拓展业务的黄金平台。对于新手商家来说,如何在抖音上建立一个成功的店铺是一项重要的任务。以下是一些关于如何做好抖音店铺的建议。明确你的目标和定位:在开设抖音店铺之前,首先要明确你的目标和定位。你要销售什么样的产品或提供什么样的服务?你的目标客户

JVM 篇

目录一、知识点汇总二、知识点详解2.1JVM的主要组成部分及其作用2.2JVM内存模型2.3堆与栈的区别2.4JVM加载class文件的原理机制2.5类的生命周期2.6Java对象结构2.7Java对象创建过程2.8指针碰撞2.9空闲列表2.10TLAB+CAS2.11说说对象内存分配2.12什么是标量与聚合量?2.1

OpenCV自学笔记十六:直方图处理

在OpenCV中,直方图(Histogram)是用于表示图像中像素强度分布的一种统计工具。它可以帮助我们了解图像的亮度、对比度、色彩分布等信息。OpenCV提供了一个函数`cv2.calcHist()`,用于计算图像的直方图。该函数接受图像数组和一些参数,例如要计算的通道数、区间的数量等。它返回一个表示直方图的一维数组

智荟康午休课桌椅成为第十届中国慈善展览会公益亮点产品

第十届中国慈善展览会(以下简称“慈展会”)于9月15日至17日在深圳会展中心隆重举办,此次展会为期3天,主要围绕“共建现代化慈善,聚力高质量发展”的主题,重点聚焦聚力民生福祉,将打造“一展多元”的展会新格局。本届慈展会共有2931家机构、2882个项目参展。开幕当天,意向对接重大捐赠项目、消费帮扶产品采购及产业投资等资

网络工程师的爬虫技术之路:跨界电商与游戏领域的探索

随着数字化时代的到来,跨界电商和游戏行业成为了网络工程师们充满机遇的领域。这两个领域都依赖于高度复杂的技术来实现商业目标和提供卓越的用户体验。本文将深入探讨网络工程师在跨界电商和游戏领域的技术挑战以及应对这些挑战的方法。突破技术障碍的爬虫应用跨界电商业务通常需要大量的市场数据和竞争情报,而这些信息可能分散在全球各个网站

电机控制器HIL测试系统:实现高效、安全的硬件在环验证

电机控制器作为电动机系统的关键组成部分,其应用前景广泛,涵盖新能源汽车、工业自动化、航空航天、能源、医疗器械等领域。随着对环保、自动化和智能化的需求增加,电机控制器将在这些领域中扮演关键角色,为实现可持续发展和智能化生产提供强有力支持。同时,随着技术的不断进步,电机控制器的性能将得到进一步提升,为各行业提供更高效、可靠

基于SpringBoot的免税商品优选购物商城

目录前言一、技术栈二、系统功能介绍登录界面管理员功能模块商家功能模块用户前台功能模块三、核心代码1、登录模块2、文件上传模块3、代码封装四、文章目录前言随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势,免税商品优选购物商城当然也不能排除在外,随着购物商城的不断成熟,它彻底改变了过去

二叉树链式存储结构

目录1.二叉树链式存储结构2.二叉树的遍历2.1前、中、后序遍历2.2层序遍历3.二叉树的其他递归问题3.1二叉树的结点个数​3.2二叉树的叶子结点个数3.3二叉树第k层结点个数3.4二叉树的深度3.5二叉树查找3.6二叉树销毁4.二叉树的基础OJ题4.1单值二叉树4.2检查两棵树是否相同4.3对称二叉树4.4另一棵树

OpenCV自学笔记十八:模板匹配

模板匹配是一种在图像中寻找指定模式的方法。OpenCV库提供了用于模板匹配的函数,可以帮助我们在图像中定位和识别特定的模式。下面是模板匹配的基础原理和一个示例:模板匹配通过在待匹配图像上滑动一个固定大小的模板图像,并计算模板与图像之间的相似度来寻找匹配位置。相似度通常使用相关性或差异度量来衡量。在滑动过程中,当相似度达

热文推荐