将html2canvas生成的canvas保存为图片

版权声明:每次关键时刻我都会掉链子,我知道重要时刻我都会发挥失常,所以我会付出150%的努力,即使只能发挥60%水平,也能拿到90分! https://blog.csdn.net/qq_16371909/article/details/83142305

想要做网页截图保存或者是将页面的某些html元素保存为图片的话,常用的插件就是html2canvas。插件的使用本身很简单,这里说的是如何将其生成的canvas保存为图片。
直接看代码,简洁靠谱我还亲自帮你实践了。

let oCard = document.querySelector("#bsCard");//要转换成canvas的元素
let oContainer = document.querySelector("#canvasContainer");//装canvas的容器

html2canvas(oCard).then(function(canvas) {
	oContainer.appendChild(canvas);
	//延迟执行确保万无一失,玄学
	setTimeout(() => {
		var type = 'png';
		var oCanvas = oContainer.getElementsByTagName("canvas")[0];
		var imgData = oCanvas.toDataURL(type);//canvas转换为图片
		// 加工image data,替换mime type,方便以后唤起浏览器下载
		imgData = imgData.replace(_fixType(type), 'image/octet-stream');	
		fileDownload(imgData);
	}, 0)
});

function _fixType(type) {
	type = type.toLowerCase().replace(/jpg/i, 'jpeg');
	let r = type.match(/png|jpeg|bmp|gif/)[0];
	return 'image/' + r;
};

//唤起浏览器下载
function fileDownload(downloadUrl){
	let aLink = document.createElement('a');
	aLink.style.display = 'none';
	aLink.href = downloadUrl;
	aLink.download = "下载文件名xxx.png";
	// 触发点击-然后移除
	document.body.appendChild(aLink);
	aLink.click();
	document.body.removeChild(aLink);
}

以上代码会将html2canvas生成的插件保存为png格式的图片,并且唤起浏览器的下载弹窗,这样就可以做一些类似于生成下载名片或者二维码一类的功能了。
顺带说一点:
如果你的要转换的元素里面有图片因为跨域的原因没有被成功截图的话,在开启了html2canvas的useCORS: true之后,还要让你的后台设置一下你的网站允许跨域,一般这样的问题大都发生在前后端分离的情况下。

猜你喜欢

转载自blog.csdn.net/qq_16371909/article/details/83142305