如何用vue实现网页截图你知道吗


Posted in Vue.js onNovember 17, 2021

1、安装html2Canvas

npm install html2canvas --save

2、在需要的vue组件中引入

import html2canvas from "html2canvas";

3、编写一个截图按钮

<el-button class="button-dalod" size="mini" title="生成图片" @click="toImage()" icon="el-icon-download"></el-button>

4、调用函数toImage

// 页面元素转图片
        toImage () {
            // 手动创建一个 canvas 标签
            const canvas = document.createElement("canvas")
            // 获取父标签,意思是这个标签内的 DOM 元素生成图片
            // imageTofile是给截图范围内的父级元素自定义的ref名称
            let canvasBox = this.$refs.imageTofile
            // 获取父级的宽高
            const width = parseInt(window.getComputedStyle(canvasBox).width)
            const height = parseInt(window.getComputedStyle(canvasBox).height)
            // 宽高 * 2 并放大 2 倍 是为了防止图片模糊
            canvas.width = width * 2
            canvas.height = height * 2
            canvas.style.width = width + 'px'
            canvas.style.height = height + 'px'
            const context = canvas.getContext("2d");
            context.scale(2, 2);
            const options = {
                backgroundColor: null,
                canvas: canvas,
                useCORS: true
            }
            html2canvas(canvasBox, options).then((canvas) => {
                // toDataURL 图片格式转成 base64
                let dataURL = canvas.toDataURL("image/png")
                console.log(dataURL)
                this.downloadImage(dataURL)
            })
        },
        //下载图片
        downloadImage(url) {
            // 如果是在网页中可以直接创建一个 a 标签直接下载 
            let a = document.createElement('a')
            a.href = url
            a.download = '首页截图'
            a.click()
        },

别忘了给页面所在截图范围内的父级添加ref属性,方便canvas找到父级计算宽高从而截屏

如何用vue实现网页截图你知道吗

这就是截图出来的效果:

如何用vue实现网页截图你知道吗 

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!

Vue.js 相关文章推荐
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
Vue 组件注册全解析
Dec 17 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 Vue.js
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
vue elementUI批量上传文件
Apr 26 Vue.js
Vue3中的Refs和Ref详情
Nov 11 #Vue.js
详细聊聊vue中组件的props属性
一定要知道的 25 个 Vue 技巧
简单聊聊Vue中的计算属性和属性侦听
Oct 05 #Vue.js
SSM VUE Axios详解
vue使用Google Recaptcha验证的实现示例
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 #Vue.js
You might like
桌面中心(二)数据库写入
2006/10/09 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
JavaScript设计模式之代理模式介绍
2014/12/28 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
JS实现微信摇一摇原理解析
2017/07/22 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
Python 第一步 hello world
2009/09/25 Python
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
netbeans7安装python插件的方法图解
2013/12/24 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
pycharm创建一个python包方法图解
2019/04/10 Python
django admin组件使用方法详解
2019/07/19 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
keras得到每层的系数方式
2020/06/15 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
学生感冒英文请假条
2014/02/04 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
质量月活动总结
2014/08/26 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
独生子女证明范本
2015/06/19 职场文书