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..." />
posted @ 2020-02-25 21:25  ZJTL  阅读(2556)  评论(0编辑  收藏  举报