html2canvas 实现下载图片,并指定下载图片大小

目录

概要

需求

配置选项

1.示例

下载安装

dom区域

按钮

核心方法


概要

在日常开发中会遇到一些场景如:网页内指定区域下载成图片。这里给大家介绍一种组件html2canvas。

需求

需求:一个海报需要指定下载大小750px,并且dom是有圆角的需要给圆角外区域给透明色。透明效果如图。

思路:实际dom区域很大需要设置下载大小,并且要给他的背景设置透明色避免圆角显示有问题。

配置选项

名称默认描述
allowTaintfalse是否允许跨原点图像污染画布
backgroundColor#ffffff如果DOM中没有指定画布背景色。将透明设置为transparent
canvasnull要用作绘图基础的现有画布元素
foreignObjectRenderingfalse如果浏览器支持,是否使用ForeignObject呈现
imageTimeout15000加载图像的超时时间(毫秒)。设置为0表示禁用超时。
ignoreElements(element) => false谓词函数,它从呈现中删除匹配的元素。
loggingtrue为调试目的启用日志记录
onclonenull该回调函数在克隆Document进行呈现时调用,可用于修改将要呈现的内容,而不会影响原始源文档。
proxynull

用于加载跨域图像的代理的Url。如果为空,则不会加载跨原点图像。

removeContainertrue是否清除html2canvas临时创建的克隆DOM元素
scalewindow.devicePixelRatio用于渲染的比例。默认为浏览器的设备像素比率。
useCORSfalse是否尝试使用CORS从服务器加载图像
widthElement width画布的宽度
heightElement height画布的高度
xElement x-offset裁剪画布x坐标
yElement y-offset裁剪画布y坐标
scrollXElement scrollX渲染元素时使用的x轴滚动位置(例如,如果元素使用position: fixed)
scrollYElement scrollY渲染元素时使用的y轴滚动位置(例如,如果元素使用position: fixed)
windowWidthWindow.innerWidth渲染Element时使用的窗口宽度,这可能会影响诸如媒体查询之类的事情
windowHeightWindow.innerHeight渲染Element时使用的窗口高度,这可能会影响诸如媒体查询之类的事情

示例

下载安装

npm install --save html2canvas

或 

yarn add html2canvas

 文件内引入

import html2canvas from 'html2canvas';

dom区域

<div id="download-images">
	这里是内容
</div>

按钮

<a-button type="primary" @click="downloadQrcode">下载海报</a-button>

核心方法

点击方法后一秒钟即可下载图片。a标签的download下载,html2canvas绘制画布。

scale 就是实现指定下载大小的关键,可用于渲染的比例。默认为浏览器的设备像素比率。

useCORS 是否尝试使用CORS从服务器加载图像

backgroundColor 设置为'transparent'即可实现背景区域透明

const downloadQrcode = () => {
	setTimeout(() => {
		const link = document.createElement('a')
		const canvas = html2canvas(document.getElementById('download-images'), {
			scale: 2.82, // 缩放比例 这个数值根据具体需求调整
            useCORS: true,
            backgroundColor: 'transparent' // 背景区域设置透明背景色
		}).then(function (canvas) {
			link.setAttribute('download', '分享海报') // 设置下载名称
			link.href = canvas?.toDataURL('image/png', 1) // 转换为png格式
			link.click()
		})
	}, 1000);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值