当前位置: 首页 > news >正文

前端生成二维码

直接img标签显示
npm i use_qrcode
npm包地址

<img :src="qrcode" alt="QR Code" />
const txt: any = ref('https://baidu.com')
const qrcode = useQRCode(txt)
const qrcodeLogo = useQRCode(txt, { logoSrc: 'https://www.antdv.com/assets/logo.1ef800a8.svg' })
import { useQRCode as _useQRCode } from "@vueuse/integrations/useQRCode";
import * as QRCode from "qrcode";
import { toRef, isClient } from "@vueuse/shared";
import { ref, watch } from "vue-demi";export function useQRCode(text: string, options?: any) {if (options?.logoSrc) return useLogoQRCode(text, options);return _useQRCode(text, options);
}export function useLogoQRCode(text, options) {const src = toRef(text);const result = ref("");const canvas: any = document.createElement("canvas");canvas.width = 132;canvas.height = 132;const logoImgSrc = ref(options.logoSrc);const labelText = "";watch(src,async (value) => {if (src.value && isClient) result.value = "";await QRCode.toDataURL(value, options, (err: any, url: string) => {let imgQRCode = new Image();imgQRCode.src = url;imgQRCode.crossOrigin = "anonymous";let img = new Image();img.src = logoImgSrc.value;img.crossOrigin = "anonymous";try {let ctx = (<HTMLCanvasElement>canvas).getContext("2d");// ctx.clearRect(0, 0, canvas.width, canvas.height);setTimeout(() => {ctx.drawImage(imgQRCode,0,0,imgQRCode.width,imgQRCode.height,0,0,canvas.width,canvas.width);let canvas_Centre_Horizontal = canvas.width / 2;let canvas_Centre_Vertical = canvas.width / 2;let logoSize_Horizontal = canvas.width * 0.16;let logoSize_Vertical = canvas.width * 0.16;let imageStart_Horizontal =canvas_Centre_Horizontal - logoSize_Horizontal / 2;let imageStart_Vertical =canvas_Centre_Vertical - logoSize_Vertical / 2;ctx.drawImage(img,//0, 0, THIS.img.nativeElement.width, THIS.img.nativeElement.height,imageStart_Horizontal,imageStart_Vertical,logoSize_Horizontal,logoSize_Vertical);ctx.font = "10px Arial";ctx.textAlign = "center";ctx.fillText(labelText, canvas.width / 2, canvas.height - 10);result.value = canvas.toDataURL("image/png");}, 50);} catch (ex) {console.log(ex);}});},{ immediate: true });return result;
}

相关文章:

前端生成二维码

直接img标签显示 npm i use_qrcode npm包地址 <img :src"qrcode" alt"QR Code" /> const txt: any ref(https://baidu.com) const qrcode useQRCode(txt) const qrcodeLogo useQRCode(txt, { logoSrc: https://www.antdv.com/assets/logo.1ef800…...

wordpress woocommer 添加代码实现,点击按钮,将产品添加到购物车并且跳转到结账页面

wordpress woocommer 添加代码实现&#xff0c;点击按钮&#xff0c;将产品添加到购物车并且跳转到结账页面 案列代码1&#xff0c;解决的是普通产品的 //短代码生成按钮&#xff0c;传入短代码&#xff0c;点击直接到达结账页面 function add_product_to_cart_button($atts)…...

Scala学习笔记6: 类

目录 第六章 类1- 简单类和无参方法2- 带有getter和setter的属性3- 只带getter的属性4- 对象私有化5- 辅助构造器6- 主构造器7- 嵌套类end 第六章 类 在Scala中, 类用于创建对象的蓝图; 类可以包含方法、值、变量、类型、对象和特质等成员; 类名应该以大写字母开头, 可以包含…...

JS数组根据对象的某一个字段排序

const person [{ name: aa, age: 9 },{ name: bb, age: 17 },{ name: cc, age: 6 },{ name: dd, age: 18 }];// 升序const arr1 person.sort((a, b) > {return a.age - b.age;b})console.log(arr1)// 降序const arr2 person.sort((a, b) > {return b.age - a.age;})co…...

JavaScript操作

做UI自动化的时候&#xff0c;有些操作无法直接通过selenium自带方法操 作成功&#xff0c;那么就需要借助前端js操作实现。 比如浏览器的滚动条这种不是html页面的内容&#xff0c;无法直接通过selenium 控制到。需要借助JavaScript控制。比如有些点击操作无法通过普通点击鼠…...

雪花算法 代码

/*** author lwh* date 2023/9/5* description 批量插入&#xff0c;手动设置**/ public class IdWorker {//因为二进制里第一个 bit 为如果是 1&#xff0c;那么都是负数&#xff0c;但是我们生成的 id 都是正数&#xff0c;所以第一个 bit 统一都是 0。//机器ID 2进制5位 3…...

我把PostgreSQL最核心的插件撸干净了!!!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…...

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…...

使用Flask Swagger自动生成API文档

文章目录 安装Flask Swagger使用Flask Swagger生成API文档总结1. 自动化文档生成2. 交互式文档展示3. 规范化API设计4. 提升协作效率5. 支持多种格式 Flask Swagger是一种用于管理Flask API文档的工具。它基于OpenAPI规范&#xff0c;可以自动生成API的交互式文档。使用Flask S…...

操作系统408考研-经典例题

什么是操作系统?答:操作系统,是计算机系统中最基本、最重要的系统软件,是其它软件 的***支撑***。控制和管理计算机系统的硬件和软件资源,合理的组织计算机工 作流程,并为用户使用计算机提供公共和基本的服务 2.多道程序 (multiprogrammming) 和多重处理 (multiprocessi…...

工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…...

react中hook 函数的使用

以 use 开头的函数被称为 Hook。useState 是 React 提供的一个内置 Hook。你可以在 React API 参考 中找到其他内置的 Hook。你也可以通过组合现有的 Hook 来编写属于你自己的 Hook。 Hook 比普通函数更为严格。你只能在你的组件&#xff08;或其他 Hook&#xff09;的 顶层 调…...

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式&#xff1a;增删查比较方便&#xff0c;但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式&#xff1a;yaml文件管理 使用yaml配置文件或者json配置文…...

webgl入门-绘制三角形

绘制三角形 前言 三角形是一个最简单、最稳定的面&#xff0c;webgl 中的三维模型都是由三角面组成的。咱们这一篇就说一下三角形的绘制方法。 课堂目标 理解多点绘图原理。可以绘制三角形&#xff0c;并将其组合成多边形。 知识点 缓冲区对象点、线、面图形 第一章 web…...

深入分析 Android Activity (三)

深入分析 Android Activity (三) 1. Activity 的配置变化处理 当设备配置&#xff08;如屏幕方向、语言、屏幕大小等&#xff09;发生变化时&#xff0c;默认情况下&#xff0c;Android 会销毁并重新创建当前的 Activity。这种行为确保了新配置能够正确应用&#xff0c;但在某…...

电影《朝云暮雨》观后感

上周看了电影《朝云暮雨》&#xff0c;看完之后&#xff0c;感觉自己整个人都不太好了&#xff0c;也不是说电影太差&#xff0c;只是觉得电影没有传达正能量&#xff0c;让人很不舒服。 &#xff08;1&#xff09;演技在线 对于著名的演员“范伟”&#xff0c;或者说&#x…...

Isaac Sim仿真平台学习(1)认识Isaac Sim

0.前言 上一个教程中我们下载好了Isaac Sim&#xff0c;这一章我们将来简单了解一下Isaac Sim平台。 isaac Sim仿真平台安装-CSDN博客 1.Isaac Sim是啥&#xff1f; What Is Isaac Sim? — Omniverse IsaacSim latest documentation Isaac Sim是NVDIA Omniverse平台的机器…...

C++:vector基础讲解

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;vector基础讲解》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#…...

Grafana 路径遍历所有路径 CVE-2021-43798漏洞预警

简介​ ​Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后&#xff0c;Grafana可以在网络浏览器里显示数据图表和警告。 漏洞危害等级 高危 CVE 编号​ CVE-2021-43798 FOFA查询 ​app"Grafana" ​zoomeyes查询 ​app:"gr…...

基于Docker部署GitLab环境搭建

文件在D:\E\学习文档子目录压缩\专项进阶&#xff0c;如ngnix,webservice,linux,redis等\docker 建议虚拟机内存2G以上 1.下载镜像文件 docker pull beginor/gitlab-ce:11.0.1-ce.0 注意&#xff1a;一定要配置阿里云的加速镜像 创建GitLab 的配置 (etc) 、 日志 (log) 、数…...

如何3分钟搞定抖音视频批量下载?完整无水印下载指南

如何3分钟搞定抖音视频批量下载&#xff1f;完整无水印下载指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support…...

咖啡一杯,Token 无限,Real-Time Cafe 深圳站来了!新增「硬件晒晒桌」与「AI 桌游试玩桌」

咖啡一杯&#xff0c;Token 无限——「Real-Time Cafe」是一个让开发者聚在一起实时 coding、实时 debug、实时互动的咖啡馆快闪计划。 Real-Time Cafe 深圳站来了&#xff01;就在本周日 5 月 24 日下午。 本站特设「硬件晒晒桌」与「AI 桌游试玩桌」——带上你的电子宠物、…...

Lovable电商系统从零部署:手把手教你用Vue+Node+MongoDB搭建高转化率商城(含完整源码)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Lovable电商系统从零部署&#xff1a;手把手教你用VueNodeMongoDB搭建高转化率商城&#xff08;含完整源码&#xff09; Lovable电商系统是一套面向中小企业的轻量级高转化率商城解决方案&#xff0c;采用前后…...

Agent Skills 万千应用 · 第04篇 Excel 分析 Skill:让 Agent 会整理表格、建公式、画图表

Agent Skills 万千应用 第04篇 Excel 分析 Skill&#xff1a;让 Agent 会整理表格、建公式、画图表01&#xff5c;场景痛点开场&#x1f4ca; 周一早上&#xff0c;老板丢过来一份 Excel&#xff1a;销售流水 8000 行、客户名称有重复、日期格式不统一、金额里还混着“元”和空…...

CANN-opbase-昇腾NPU算子开发的基础设施为什么这么重要

CANN-opbase-昇腾NPU算子开发的基础设施为什么这么重要 所有 CANN AOL 算子仓库的底层都依赖 opbase。它不提供任何算子实现&#xff0c;提供的是算子注册、编译、调度的基础设施。如果你要写自定义 Ascend C 算子&#xff0c;opbase 是绕不过去的第一步。 opbase 提供了什么组…...

【Qt学习】基本类型、日志输出、字符串、QVariant

文章目录基本数据类型日志输出Qt Creator中看日志单独控制台看日志字符串类型示例字符串拼接字符串长度QVariant示例变量相加自定义类型前文回顾&#xff1a; 【Qt学习】Windows上环境配置与项目初识 【Qt学习】三个窗口类、坐标系、内存回收 基本数据类型 Qt基本数据类型定义…...

BlockingQueue实现原理与生产者消费者模式

前言 在现代软件开发中&#xff0c;BlockingQueue实现原理与生产者消费者模式是一个非常重要的技术点。本文将从原理到实践&#xff0c;带你深入理解这一技术&#xff0c;并通过完整的代码示例帮助你快速掌握核心知识点。 核心概念 基本原理 BlockingQueue实现原理与生产者消费…...

Frida-server魔改实战:Android native层反调试对抗七步法

1. 这不是“绕过检测”&#xff0c;而是让frida-server从“被识别对象”变成“系统一部分”在安卓逆向和安全测试一线干了十多年&#xff0c;我见过太多人把Frida检测对抗理解成一场猫鼠游戏&#xff1a;App加个检测逻辑&#xff0c;测试方就写个绕过脚本&#xff1b;检测逻辑升…...

如何找到最适合你的私有化IM?

跳出公有云的舒适区&#xff0c;决心搭建私有化IM&#xff0c;并不是一件能一蹴而就的事。市面上打着私有化旗号的软件鱼龙混杂&#xff0c;有的安装环境要求极高&#xff0c;有的功能华而不实。如何在复杂的选型迷雾中&#xff0c;找到最适合组织基因的那一款&#xff1f;你可…...

Java SSRF漏洞深度解析:从URLConnection安全风险到多层防御实战

1. 项目概述&#xff1a;从两个看似简单的API说起在Java开发中&#xff0c;URLConnection和openStream()这两个方法几乎是每个开发者入门网络编程时最早接触的API。它们简单、直观&#xff0c;几行代码就能实现从网络获取数据的功能。然而&#xff0c;正是这种“简单易用”的特…...