首页 > 其他分享 >前端二维码生成并导出

前端二维码生成并导出

时间:2024-03-27 16:45:16浏览次数:25  
标签:canvas downloadLink 前端 导出 height width 二维码 var document

`

<head> <title>二维码生成</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no" /> <script type="text/javascript" src="https://cdn.staticfile.net/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript" src="https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/qrcodejs/1.0.0/qrcode.js"></script> </head> <style> .box { height: 100%; width: 100%; margin: 0 auto; padding: 20px; }
#submit-btn {
	margin-left: 15px;
}

#text {
	width: 300px;
}

#qrcode {
	margin-top: 25px;
	height: 100px;
	width: 100px;
}
<body> <div class="box"> <textarea id="textarea" name="textarea" rows="5" cols="170" placeholder="请输入生成二维码的数据"></textarea> <button id="submit-btn">生成二维码</button> <button id="download-btn" disabled>下载</button><br /> <div id="qrcode"></div> <canvas id="canvas" style="display:none;"></canvas> </div>
<script type="text/javascript">
	var str = { "po": "SPW-456"}
	var dom = document.getElementById("qrcode")
	var elTextarea = document.getElementById("textarea");
	var canvas = document.getElementById("canvas");
	var downloadBtn = document.getElementById("download-btn");
	var ctx = canvas.getContext("2d");
	elTextarea.value = JSON.stringify(str)
	var qrcode = new QRCode(dom, {
		width: 500,
		height: 500,
		// correctLevel: QRCode.CorrectLevel.L // 尝试降低纠错级别
	});

	$("#submit-btn").off("click").on("click", () => {
		if (!elTextarea.value) {
			downloadBtn.disabled = true;
			alert("请输入文本!");
			return false;
		}

		try {
			qrcode.makeCode(elTextarea.value);
			downloadBtn.disabled = false; // 生成成功后启用下载按钮
		} catch (error) {
			alert("生成二维码出错:" + error.message);
			downloadBtn.disabled = false; // 启用下载按钮以便用户可以重试
		}
	})
	$("#download-btn").off("click").on("click", function () {
		canvas.width = qrcode._oDrawing._elImage.width;
		canvas.height = qrcode._oDrawing._elImage.height;
		ctx.clearRect(0, 0, canvas.width, canvas.height);
		ctx.drawImage(dom.querySelector("img"), 0, 0, canvas.width, canvas.height);
		var dataURL = canvas.toDataURL("image/png");
		var downloadLink = document.createElement("a");
		downloadLink.href = dataURL;
		downloadLink.download = "二维码.png";
		document.body.appendChild(downloadLink);
		downloadLink.click();
		document.body.removeChild(downloadLink);
	});
</script>
</body> `

标签:canvas,downloadLink,前端,导出,height,width,二维码,var,document
From: https://www.cnblogs.com/33shan/p/18099663

相关文章

  • 人工智能时代,前端全栈成就独立开发工程师 next.js 开发实战
    由于next.js是基础于react所以在正式学习next.js之前我们了解一下react一模块,就是一个文件,向外提供一些功能的文件,之所要要折分模块就是因为功能越来越复杂,为了方便管化或管理。第一部份,我们用最原始的,没有用脚手架,所以要手工加载三个文件,一个dom 一个react 一个babel......
  • 前端学习-UI框架学习-Bootstrap5-002-容器
    菜鸟教程链接固定宽度.container类用于创建固定宽度的响应式页面。<divclass="container"><h1>我的第一个Bootstrap页面</h1><p>这是一些文本。</p></div>100%宽度.container-fluid类用于创建一个全屏幕尺寸的容器,容器始终跨越整个屏幕宽度(width始终为100%):......
  • 前端学习-UI框架学习-Bootstrap5-001-了解和安装
    菜鸟教程链接如何安装/使用两种安装方式:使用Bootstrap5CDN。在index.html文件的head标签内,添加:<!--新Bootstrap5核心CSS文件--><linkrel="stylesheet"href="https://cdn.staticfile.net/twitter-bootstrap/5.1.1/css/bootstrap.min.css"><!--popper.m......
  • 前端框架选择:Vue VS React
    目录Vue是什么?React又是什么?Vue的优缺点React的优缺点选择Vue选择ReactVuevsReact如今,大多数大型WebApp都是使用给力的JS前端开发框架构建的。其中人气最高的两个框架是——React和Vue。下面我将根据这两个框架实际应用深入刨析它们各自的特点,全面掌......
  • 前端学习-TypeScript菜鸟教程-002-TypeScript基础知识
    菜鸟教程链接基本是阅读教程,记笔记大部分为直接复制基础类型any,number,string,boolean,数组(如letx:number[]=[1,2]或letx:Array<number>=[1,2]),元组(letx:[string,number])enumenumColor{Red,Green,Blue};letc:Color=Color.Blue;void:用于标识方......
  • 深入在线文档系统的 MarkDown/Word/PDF 导出能力设计
    深入在线文档系统的MarkDown/Word/PDF导出能力设计当我们实现在线文档的系统时,通常需要考虑到文档的导出能力,特别是对于私有化部署的复杂ToB产品来说,文档的私有化版本交付能力就显得非常重要,此外成熟的在线文档系统还有很多复杂的场景,都需要我们提供文档导出的能力。那么本文就......
  • 【前端素材】推荐5种优质大数据分析展示页面网站设计(16)(附源码)
    一、需求分析1、功能分析大数据分析展示页面是一个用于呈现和分析大数据的平台界面,旨在帮助用户更直观、更高效地理解和利用数据。该页面通常结合了数据分析、可视化技术以及用户交互设计,以提供丰富的数据展示和分析功能。大数据分析展示页面是大数据分析过程中至关重要的一......
  • 【前端素材】推荐5种优质大数据分析展示页面网站设计(18)(附源码)
    一、需求分析1、功能分析大数据分析展示页面是一个用于呈现和分析大数据的平台界面,旨在帮助用户更直观、更高效地理解和利用数据。该页面通常结合了数据分析、可视化技术以及用户交互设计,以提供丰富的数据展示和分析功能。大数据分析展示页面是大数据分析过程中至关重要的一......
  • Web前端大作业(我的学校)
    前言web前端开发课程的结课作业就是三个主题三选一,我选择的是写一个关于我的学校的网站(包括了十来个网页结合css、html、js)一、期末大作业要求利用VisualStudioCode软件并结合html、css、js进行网站的书写。二、我的学校网站项目的设计1、所用的框架   我是用的bo......
  • 一、前端架构原则
    和阿牛一起冲web前端架构设计......