Vue3二维码(QRCode)

news2024/9/28 21:19:20

可自定义设置以下属性:

  • 扫描后的文本或地址(value),类型:string,默认 ''

  • 二维码大小(size),类型:number,单位px,默认 160

  • 二维码颜色,Value must be in hex format (十六进制颜色值)(color),类型:string,默认 '#000'

  • 二维码背景色,Value must be in hex format (十六进制颜色值)(backgroundColor),类型:string,默认'#FFF'

  • 是否有边框(bordered),类型:boolean,默认 true

  • 每个black dots多少像素(scale),类型:number,默认 8

  • 二维码纠错等级(errorLevel),类型:string,默认 'H'

纠错等级也叫纠错率,就是指二维码可以被遮挡后还能正常扫描,而这个能被遮挡的最大面积就是纠错率。

通常情况下二维码分为 4 个纠错级别:L级 可纠正约 7% 错误、M级 可纠正约 15% 错误、Q级 可纠正约 25% 错误、H级 可纠正约30% 错误。

并不是所有位置都可以缺损,像最明显的三个角上的方框,直接影响初始定位。中间零散的部分是内容编码,可以容忍缺损。

当二维码的内容编码携带信息比较少的时候,也就是链接比较短的时候,设置不同的纠错等级,生成的图片不会发生变化。

效果如下图:

安装插件:yarn add @vueuse/integrations

①创建二维码组件QRCode.vue:

<script setup lang="ts">
import { useQRCode } from '@vueuse/integrations/useQRCode'
/*
  参考文档:https://vueuse.org/integrations/useQRCode/
  https://www.npmjs.com/package/qrcode#qr-code-options
*/
interface Props {
  value?: string // 扫描后的文本或地址
  size?: number // 二维码大小
  color?: string // 二维码颜色,Value must be in hex format (十六进制颜色值)
  backgroundColor?: string // 二维码背景色,Value must be in hex format (十六进制颜色值)
  bordered?: boolean // 是否有边框
  scale?: number // 每个black dots多少像素
  /*
    纠错等级也叫纠错率,就是指二维码可以被遮挡后还能正常扫描,而这个能被遮挡的最大面积就是纠错率。
    通常情况下二维码分为 4 个纠错级别:L级 可纠正约 7% 错误、M级 可纠正约 15% 错误、Q级 可纠正约 25% 错误、H级 可纠正约30% 错误。
    并不是所有位置都可以缺损,像最明显的三个角上的方框,直接影响初始定位。中间零散的部分是内容编码,可以容忍缺损。
    当二维码的内容编码携带信息比较少的时候,也就是链接比较短的时候,设置不同的纠错等级,生成的图片不会发生变化。
  */
  errorLevel?: string // 二维码纠错等级
}
const props = withDefaults(defineProps<Props>(), {
  value: '',
  size: 160,
  color: '#000',
  backgroundColor: '#FFF',
  bordered: true,
  scale: 8,
  errorLevel: 'H' // 可选 L M Q H
})

// `qrcode` will be a ref of data URL
const qrcode = useQRCode(props.value, {
  errorCorrectionLevel: props.errorLevel,
  type: 'image/png',
  quality: 1,
  margin: 3,
  scale: props.scale, // 8px per modules(black dots)
  color: {
    dark: props.color, // 像素点颜色
    light: props.backgroundColor // 背景色
  }
})
</script>
<template>
  <div class="m-qrcode" :class="{'bordered': bordered}" :style="`width: ${size}px; height: ${size}px;`">
    <img :src="qrcode" class="u-qrcode" alt="QRCode" />
  </div>
</template>
<style lang="less" scoped>
.m-qrcode {
  box-sizing: border-box;
  display: inline-block;
  border-radius: 8px;
  overflow: hidden;
  .u-qrcode {
    width: 100%;
    height: 100%;
  }
}
.bordered {
  border: 1px solid rgba(5, 5, 5, 0.06);
}
</style>

②在要使用的页面引入:

<script setup lang="ts">
import QRCode from './QRCode.vue'
</script>
<template>
  <div>
  <h2 class="mb10">QRCode 二维码基本使用</h2>
  <QRCode value="https://blog.csdn.net/Dandrose"/>
  <h2 class="mt30 mb10">无边框,纠错等级M (bordered: false & errorLevel: M)</h2>
  <QRCode
    value="https://blog.csdn.net/Dandrose"
    errorLevel="M"/>
  <h2 class="mt30 mb10">自定义二维码颜色和背景色 (color: '#1677FF', backgroundColor: 'rgba(0,0,0,0.25)')</h2>
  <QRCode
    value="https://blog.csdn.net/Dandrose"
    color="#1677FF"
    backgroundColor="f5f5f5"/>
  </div>
</template>
<style lang="less" scoped>
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx 部署vue项目,路由模式为history时,页面刷新404问题

目录 情况说明本案例解决方法配置解释为什么会出现404的情况root 和 alias 的区别try_files 配置的作用 友情提示 情况说明 nginx部署vue项目&#xff0c;文件放在html下的dist文件夹中 nginx.conf 文件中&#xff0c;server 里配置文件的位置、请求跨域等信息 本案例解决方…

Ubuntu Linux操作

引言 晚上上课发现桌子上遗留了这本书&#xff0c;水课就看了看学习下&#xff0c;以下内容直接总结知识点 磁盘内存解析 (1)硬盘有数个盘片,每个盘片两个面,每个面一个磁头。 (2)盘片被划分为多个扇形区域即扇区。 (3)同一盘片不同半径的同心圆为磁道。 (4)不同盘片相同半径…

制作真人手办有哪些不便?怎么解决?

相信很多朋友都喜欢拍摄写真&#xff0c;比如孩子生日的时候&#xff0c;结婚纪念的时候&#xff0c;写真照片能留存住很多美好的记忆。 不过随着科技的发展&#xff0c;大家已经不能满足只靠照片来记录生活了&#xff0c;越来越多的人开始盯上了手办这件物品。将真人的照片和…

4.5 创建透视表与交叉表

4.5 创建透视表与交叉表 4.5.1利用pivot_table函数可以实现透视表pivot_table函数的常用参数及其说明 4.5.2 使用crosstab函数创建交叉表crosstab函数的常用参数及其说明 4.5.3 任务实现数据完整代码 数据透视表&#xff08;Pivot Table&#xff09;是数据分析中一种常用的工具…

018 - C++ 类和结构体中的静态(static)

上一期我们讨论了 C 中的 static 关键字以及它在类或结构体之外的意义。本期我们讨论 static 在一个类或一个结构体中的具体情况。 先了解这些 在几乎所有面向对象的语言中&#xff0c;静态在一个类中意味着特定的东西。这意味着在类的所有实例中&#xff0c;这个变量只有一个…

【c#串口通信从小白到大神(5)】如何打开串口

1、新建一个winform程序 这里以visual studio 2019 社区版为例,关于visual studio 2019 社区版的下载链接请点击这里:如何下载安装visual studio 2019 社区版 第1步、打开visual studio 2019 ,出现下图: 第2步、点击“创建新项目”,如下图: 第3步、选择 “Windows 窗…

深眸科技围绕机器视觉技术,加速实现制造行业生产线智能化升级

工业4.0时代&#xff0c;是以智能制造为代表的第四次工业革命时代。随着人工智能的高速发展&#xff0c;机器视觉作为当前制造业质量控制领域的重要技术之一&#xff0c;在各行各业的应用逐渐广泛&#xff0c;其行业市场需求进一步飙升。据GGII预测&#xff0c;预计2025年&…

openEuler实验-使用Shell脚本实现局域网MAC地址收集和FTP服务监控

linux的简单运用 目录 前言 1. 实验目的 2. 实验内容 3. 实验知识点 4. 实验时长 5. 实验环境 实验分析 部署FTP服务器 1&#xff09;安装FTP服务 2&#xff09;查看FTP服务 3&#xff09;启动FTP服务 4&#xff09;关闭FTP服务 收集MAC地址 1&#xff09;修改主…

C++17字符流以及C++11文件流以及IO流

getline() 有时候我们希望在最终的字符串中保留输入时的空白符&#xff0c;这时候应该用getline函数来替代原来的>>运算符。&#xff08; cin 不能输入包含嵌入空格的字符串&#xff09;。 getline()函数的参数是一个输入流和一个string对象&#xff0c;原型是&#xf…

threejs的使用

threejs介绍&#xff1a; Three.js是一款基于WebGL的JavaScript 3D库&#xff0c;用于创建和渲染3D图形场景。它提供了一个简单易用的接口&#xff0c;让开发者可以通过JavaScript代码创建出高度交互性和可视化的3D场景。Three.js提供了很多可用的3D对象和材质&#xff0c;例如…

C++ -2- 类和对象(上)| 什么是类

​ 文章目录 1.面向过程与面向对象2.类的引入3.类的定义两种定义方式 4.类的访问限定符5.类的作用域6.类的示例化7.类的对象大小计算8.类成员函数的this指针C语言和C的对比(this指针)空指针的问题 C语言和C实现Stack对比 1.面向过程与面向对象 C&#xff1a;面向过程&#xf…

java获取请求ip的方法

在上篇文章中我们介绍了 java获取请求 ip的方法&#xff0c;那么这篇文章我们就来详细讲解下获取请求 ip的方法。获取请求 ip的方法是基于 HTTP协议的&#xff0c;其原理如下&#xff1a; 1、用 web应用程序&#xff0c;将 web服务器端与客户端通过 HTTP协议通信。 2、客户端发…

LNMP架构和论坛搭建以及一键部署

数据流向 一、Nginx服务安装 1、关闭防火墙 [rootking ~]# systemctl stop firewalld [rootking ~]# systemctl disable firewalld [rootking ~]# setenforce 0 2、将所需软件包拖入/opt目录下 3、安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make 4、创建运…

Feign快速入门

文章目录 一、Feign1.1 Feign介绍1.2 Feign的使用步骤1.3 Feign的自定义配置1.3.1 配置方法 1.4 Feign的优化 一、Feign 1.1 Feign介绍 Feign是一个Java HTTP客户端&#xff0c;它使开发人员可以轻松地与RESTful API进行交互。Feign使用注释来描述REST API&#xff0c;它还支持…

Springboot整合Junit5

1 SpringBoot整合Junit &#xff08;一&#xff09;junit5 介绍 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架&#xff0c;JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。 JUnit 5 JUnit Platfo…

音视频开发十九:SDL线程和事件

SDL事件相关API DL_Event 是SDL库中使用的一个数据结构&#xff0c;用于表示系统中发生的事件。一个事件可以是键盘按键、鼠标移动、游戏手柄移动、窗口事件等。SDL_Event 结构包含有关事件类型、事件发生时间和事件参数的详细信息。 SDL_Event 结构具有以下成员&#xff1a;…

[5 种有效方法] 适用于 Android 的通用解锁图案/密码

在当今世界&#xff0c;保护您的密码对于您的文件和数据的安全至关重要&#xff0c;尤其是在第三方应用程序盛行的情况下。为这些应用程序注册帐户不是问题&#xff0c;就像记住它们一样。但是&#xff0c;如果您不知何故忘记了手机密码&#xff0c;您仍然可以在不丢失宝贵数据…

突破规模化运维瓶颈 SREWorks云原生数智运维平台揭秘

作者&#xff1a; 钟炯恩——阿里云大数据基础工程技术团队运维专家 引言 突破规模化运维瓶颈是诸多IT规模增长的企业及组织当前遇到的比较棘手的问题。面对这些问题&#xff0c;多数人的第一反应是上云。但是上云之后我们会发现&#xff0c;即使云上的架构规模增大&#xf…

如何使用DNS实现融合CDN功能

将托管DNS解决方案与CDN配对可为您的网站提供额外的性能、可靠性和灵活性。 域名系统&#xff08;DNS&#xff09;是一种用于计算机、服务或连接到Internet或专用网络的任何资源的分层分布式命名系统&#xff0c;它将各种信息与分配给每个参与实体的域名相关联&#xff0c;它基…

ChatGPT 火了,一大批开源平替也来了

ChatGPT 凭一己之力让全球为 AI 沸腾&#xff0c;引发了科技巨头之间的聊天机器人军备竞赛。 众所周知&#xff0c;ChatGPT 的背后技术是 GPT(Generative Pre-trained Transformer)模型。GPT 是一种基于 Transformer 模型的自然语言处理模型&#xff0c;由 OpenAI 公司开发。它…