今天项目中有个需求,需要将页面的一部分转为图片,相当于存证之类的

然后我查阅了下百度,发现了几种可行的方法,特此来记录下

1.html2canvas插件

安装:npm install --save html2canvas

然后在指定的位置引入

使用:

html2canvas(this.$refs.imageDom, {
width: this.$refs.imageDom.clientWidth, //dom 原始宽度
height: this.$refs.imageDom.clientHeight,
allowTaint: true, //允许污染
taintTest: true, //在渲染前测试图片
// useCORS: true, //开启跨域配置,但和allowTaint不能共存
}.then(img => {

});

注意点

这个里面一些css样式是不支持的,然后出现空白啥的就更换css样式,如果图片超过一个屏幕的高度,需要加上 window.scroll(0,0)

这个项目是我接手的别人的项目,然后本地运行是没有问题的,然后上线之后就会出现图片偏移这个说法,这个项目用的是gulp打包,我至今没有解决,如果有其他大佬知道的话,麻烦告诉我一下

还有一些页面加载的时候可能页面没加载完成就生成了图片可以加一个定时器

2.dom-to-image

安装:npm install dom-to-image

在指定页面引入

这个使用的时候相当简单,有几个常用的api

domtoimage.toPng(...);将节点转化为png格式的图片

domtoimage.toJpeg(...);将节点转化为jpg格式的图片

domtoimage.toSvg(...);将节点转化为svg格式的图片,生成的图片的格式都是base64格式。

domtoimage.toBlob(...);将节点转化为二进制格式,这个可以直接将图片下载,是不是非常方便

domtoimage.toPixelData(...);获取原始像素值,以Uint8Array 数组的形式返回,每4个数组元素表示一个像素点,即rgba值。这个方法也是挺实用的,可以用于WebGL中编写着色器颜色。

domtoimage 主要的属性有:

filter : 过滤器节点中默写不需要的节点;

bgcolor : 图片背景颜色;

height, width : 图片宽高;

style :传入节点的样式,可以是任何有效的样式;

quality : 图片的质量,也就是清晰度;

cacheBust : 将时间戳加入到图片的url中,相当于添加新的图片;

imagePlaceholder : 图片生成失败时,在图片上面的提示,相当于img标签的alt;

评价自己

这个的话相对简单一点没有出现错位的图,我因为那个没有解决所以就换了一种方法,不是我不解决,我那个看了一天实在是我菜,然后没解决,没办法只能想其他方法,这个办法相对比较好,通俗易懂

 

vue中dom节点转图片的更多相关文章

  1. vue中的js引入图片,必须require进来

    需求:如何components里面的index.vue怎样能把assets里面的图片拿出来. 1.在img标签里面直接写上路径: <img src="../assets/a1.png& ...

  2. vue中的js引入图片,使用require相关问题

    vue中的js引入图片,必须require进来 或者引用网络地址 <template> <div class="home"> <img alt=&qu ...

  3. js中DOM 节点的一些操作方法

    什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节点组成的. 解析过程 ...

  4. 转:ie6与firefox操作iframe中DOM节点的一点不同

    依次在两个浏览器中运行以下代码 <html> <body> <iframe id="myiframe"></iframe> < ...

  5. 原生JS中DOM节点相关API合集

    节点属性 Node.nodeName //返回节点名称,只读 Node.nodeType //返回节点类型的常数值,只读 Node.nodeValue //返回Text或Comment节点的文本值,只 ...

  6. vue中添加文字或图片水印

    首先引用warterMark.js,内容如下 'use strict' var watermark = (className,str,type) => { let dom = document. ...

  7. vue中如何动态的绑定图片,vue中通过data返回图片路径

    在项目中遇到需要动态的改变图片路径,图片路径并非是从后台获取过来的数据. 因此在data中必须用require加载,否则会当成字符串来处理. 效果:

  8. 在vue中通过js动态控制图片按比列缩放

    1.html 通过外层的div来给img对应的class,隐藏的img是得到img图片请求回来时的原始尺寸.外层div是固定大小,因此,图片有两种情况去适应外部div的尺寸.一种是宽度大于高度的情况, ...

  9. vue中动态加载图片路径的方法

    assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src=”./logo.png”>和background:url(./logo.p ...

随机推荐

  1. Windows PE导出表编程4(重构导出表实现私有函数导出)

    本次是尝试调用DLL里面的私有函数. 一: 之前先探索一下,首先可以考虑用偏移量来调用,就是如果知道了某个私有函数和某个导出的公共函数的相对便宜的话,直接加载dll获取公共函数地址,然后自己手动去偏移 ...

  2. [CTF]思维导向图

    [CTF]思维导向图 ---------------来自大佬的CTF思维导向图 Angel_Kitty https://www.cnblogs.com/ECJTUACM-873284962/ 给信息安 ...

  3. Mac SSH工具-Termius

    全平台,功能强大 SSH连接.SFTP连接.端口转发.多设备同步 官方网站

  4. Yii2访问gii模块403

    出现问题 访问Yii2的gii模块没有权限,403 找到原因 在Yii2-gii源码文件中(vendor/yiisoft/yii2-gii/src/Module.php)可以看到有一个配置项$allo ...

  5. Cmder右键配置

    Cmder右键配置 每次用camder手动一层一层的进入目标文件夹,是一件很麻烦的事儿.所以,将camder添加到系统右键菜单是个很好地解决方法. 1.把 Cmder 加到环境变量 把Cmder.ex ...

  6. 月薪6K和月薪2W的测试,有什么区别?

    之前,我收到了一位朋友的好消息,说自己拿到了接近月薪 20k 的 offer.   说实话,软件测试岗位前期门槛低,但是想要拿到高薪真没那么简单.工作 2-3 年薪资还在原地打转的同学,都大有人在. ...

  7. 想要测试Dubbo接口?测试的关键点在哪里?

    Dubbo接口如何测试? 这个dubbo如何测试,dubbo接口测试什么玩意儿?   RPC的有一个类型,叫Dubbo接口. 那这个接口如何测试?测试的关键点在哪里? 这个面试问题,我觉得大家可能就有 ...

  8. 浅入浅出 MySQL 索引

    简单了解索引 首先,索引(Index)是什么?如果我直接告诉你索引是数据库管理系统中的一个有序的数据结构,你可能会有点懵逼. 为了避免这种情况,我打算举几个例子来帮助你更容易的认识索引. 我们查询字典 ...

  9. MySQL密码复杂度与密码过期策略介绍

    前言: 年底了,你的数据库是不是该巡检了?一般巡检都会关心密码安全问题,比如密码复杂度设置,是否有定期修改等.特别是进行等保评测时,评测机构会要求具备密码安全策略.其实 MySQL 系统本身可以设置密 ...

  10. Consul 服务的注册和发现

    Consul 是Hashicorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.Consul是分布式的,高可用的,可横向扩展的. Consul 的主要特点有:    Service Disc ...