dom-to-image实现页面截图 和 base64图片编码
dom-to-image 是一个JS类库,它可以将任意DOM节点转换成 SVG/PNG/JPEG 格式的图像。
当页面元素较多的时候,非常的好用!
安装和引用:
npm install dom-to-image import domtoimage from 'dom-to-image';
方法和属性:
domtoimage.toPng(...); 将节点转化为png格式的图片
domtoimage.toJpeg(...); 将节点转化为jpg格式的图片
domtoimage.toSvg(...); 将节点转化为svg格式的图片,生成的图片的格式都是base64格式
domtoimage.toBlob(...); 将节点转化为二进制格式,这个可以直接将图片下载
domtoimage.toPixelData(...); 获取原始像素值,以Uint8Array 数组的形式返回,每4个数组元素表示一个像素点,即rgba值。这个方法也是挺实用的,可以用于WebGL中编写着色器颜色。
filter : 过滤器节点中默写不需要的节点;
bgcolor : 图片背景颜色;
height, width : 图片宽高,像素为单位;
style :传入节点的样式,可以是任何有效的样式;
quality : 图片的质量,也就是清晰度;接收0到1之间的数字(例如0.92 => 92%),用于指定JPEG图像的图像质量。默认为1.0(100%)
cacheBust : 将时间戳加入到图片的url中,相当于添加新的图片;设置为true时,会将当前时间作为请求参数附加到URL请求,以启用缓存清除。 默认为false。
imagePlaceholder : 图片生成失败时,在图片上面的提示,相当于img标签的alt;
举个例子:
domtoimage.toPng(node) .then((dataUrl) => { this.img = dataUrl; }) .catch(function (error) { console.error('oops, something went wrong!', error); }); } 注意:这里返回的dataUrl就是base64编码
base64图片编码:
一般用于接口上传给后台。DataURI 允许在HTML文档中嵌入小文件,可以使用 img 标签或 CSS 嵌入转换后的 Base64 编码,减少 HTTP 请求,加快小图像的加载时间。 经过Base64 编码后的文件体积一般比源文件大 30% 左右。
// Base64 在CSS中的使用
.box{
background-image: url("data:image/jpg;base64,/9j/4QMZR...");
}
// Base64 在HTML中的使用
<img src="data:image/jpg;base64,/9j/4QMZR..." />