将html2canvas生成的canvas保存为图片

使用html2canvas插件实现网页截图或html元素转图片功能,代码演示如何将canvas保存为png并触发下载。当遇到跨域图片未被截图问题时,需开启html2canvas的跨域设置,并让后端配合处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想要做网页截图保存或者是将页面的某些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之后,还要让你的后台设置一下你的网站允许跨域,一般这样的问题大都发生在前后端分离的情况下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值