zoukankan      html  css  js  c++  java
  • js将任意标签转换成图片下载到本地

    一、相关技术及参考网站

    1、html2canvas
    2、canvas标签

    说明

    使用js将html上任意一个标签及其子标签展示的内容生成图片,并下载到本地。

    1、核心是用html2canvas将指定标签元素转换成canvas标签的图表
    2、然后用canvas标签自带的转码功能获取图表的base64地址
    3、最后创建a标签下载base64内容

    二、页面及下载效果

    页面效果

    页面效果

    下载效果

    第一张

    第二张

    三、可运行代码:

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<script src="http://html2canvas.hertzen.com/dist/html2canvas.js"></script>
    		<title></title>
    	</head>
    	<body>
    		<div style=" 148.8px;display: inline-block;">
                            //要下载成图片的标签
    			<div id="pic1" style=" 148.8px;display: inline-block; padding: 10px 0px;">
    				<img id="cavasimg1" src="test.png" style="display: block; 120px;height: 120px; margin-left: auto;margin-right: auto;" />
    				<strong style="display: block;text-align: center;line-height: 1.15;font-size: 12px;">我媳妇儿</strong>
    				<strong style="display: block;text-align: center;line-height: 1.15;font-size: 12px;">22岁</strong>
    			</div>
    			<input type="button" id="btnsavaImg1" value="下载本地图片" onclick="download()" />
    		</div>
    		
    		<div style=" 148.8px;display: inline-block;">
                            //要下载成图片的标签
    			<div id="pic2" style=" 148.8px;display: inline-block; padding: 10px 0px;">
    				<img id="cavasimg2" src="http://pic1.zhimg.com/50/v2-a1daed32cac3a2904997f1f7e0b60d9b_hd.jpg" crossorigin="Anonymous" style="display: block; 120px;height: 120px; margin-left: auto;margin-right: auto;" />
    				<strong style="display: block;text-align: center;line-height: 1.15;font-size: 12px;">我媳妇儿</strong>
    				<strong style="display: block;text-align: center;line-height: 1.15;font-size: 12px;">22岁</strong>
    			</div>
    			<input type="button" id="btnsavaImg2" value="下载url图片" onclick="downloadUrlImg()" />
    		</div>
    	</body>
    
    	<script>
    		//图片在本地或者src是base64编码的情况下可以直接下载含img标签的父级标签
    		function download() {
    			var pic1 = document.getElementById("pic1") //要生成图片的标签
    			//生成canvas标签
    			html2canvas(pic1).then(function(canvas) {	//找到pic元素时,生成canvas元素。
    				var dataURL =canvas.toDataURL("image/png")	 // 获取canvas对应的base64编码
    				restoreImg(dataURL)	//下载canvas图片
    			});
    		}
    		
    		//图片是url时,需要将图片转换成base64进行下载。
    		function downloadUrlImg(){
    			debugger
    			var img = document.getElementById("cavasimg2")
    			var canvas = document.createElement("canvas");
    			canvas.width = img.width;
    			canvas.height = img.height;
    			var ctx = canvas.getContext("2d");
    			ctx.drawImage(img, 0, 0, img.width, img.height);
    			var imgBase64 = canvas.toDataURL("image/png");  // 可选其他值 image/jpeg
    			img.setAttribute("src",imgBase64)
    			
    			var pic2 = document.getElementById("pic2") //要生成图片的标签
    			//生成canvas标签
    			html2canvas(pic2).then(function(canvas) {	//找到pic元素时,生成canvas元素。
    				var dataURL =canvas.toDataURL("image/png")	 // 获取canvas对应的base64编码
    				restoreImg(dataURL)	//下载canvas图片
    			});
    			
    			restoreImg(dataURL)
    		}
    		
    		function restoreImg(dataURL) {
    			debugger
    			let href = dataURL	
    			let a = document.createElement('a') // 创建a标签
    			a.download = "picName" // 设置图片名字
    			a.href = href
    			a.dispatchEvent(new MouseEvent('click'))	//模拟点击进行下载 
    		}
    	</script>
    
    </html>
    
  • 相关阅读:
    sklearn库学习笔记1——preprocessing库
    juypter notetbook
    信用卡欺诈
    matplotlib1
    python一行输入多个数
    pandas数据预处理
    pandas基础用法
    numpy简单用法2
    numpy 简单用法
    简单循环
  • 原文地址:https://www.cnblogs.com/mengfff/p/12427631.html
Copyright © 2011-2022 走看看