码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • uniapp——实现二维码生成+保存二维码图片——基础积累


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

    这里写目录标题

    • 效果图
    • 1.根据接口返回的链接生成二维码——`uv-Qrcode`的用法
              • 1.1 插件市场导入`uv-qrcode`插件
              • 1.2 当前页面引入`uvQrcode`
              • 1.3 `html`代码使用`uvQrcode`
              • 1.4 `options`配置
              • 1.5 生成二维码
    • 2.长按保存二维码
              • 2.1 `html`代码部分
              • 2.2 长按方法——`longpress`——自定义`h5`和`app`的保存方法
              • 2.3 长按方法——`longpress`——通过`qrcode`的`save`方法来实现

    效果图

    在这里插入图片描述

    下面介绍一下整体流程:

    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
    1.3 html代码使用uvQrcode
    <uv-qrcode ref="qrcode" canvas-id="qrcode" :value="value" size="300rpx" :loading="loading"
    :options="options"></uv-qrcode>
    
    • 1
    • 2

    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')
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    详细内容可以参考: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)
    		}
    	});
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2.2 长按方法——longpress——自定义h5和app的保存方法

    此处我做了处理,如果是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
    },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    2.3 长按方法——longpress——通过qrcode的save方法来实现

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

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

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

  • 相关阅读:
    LT8711UXD 是一款高性能双通道 Type-C/DP1.4 至 HDMI2.0 转换器
    塑钢门窗三位焊接机中工位设计
    PT_常见的连续型分布/均匀分布/指数分布/柯西分布/正态分布
    springboot整合redis,并使用@Cacheable等注解进行缓存
    驱动开发--自动创建设备节点udev机制的实现过程
    2023!6招玩转 Appium 自动化测试
    探店通系统源码。短视频矩阵源码,here here here。
    计算机毕业设计springboot驾校学员管理系统w42sj源码+系统+程序+lw文档+部署
    python读取execel表格(xls等格式)转换为csv,并且加载到hive表中
    11.新增class
  • 原文地址:https://blog.csdn.net/yehaocheng520/article/details/133020626
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号