如何用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 $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
Vue如何实现变量表达式选择器
Feb 18 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
关于vue中如何监听数组变化
Apr 28 Vue.js
Vue Element UI自定义描述列表组件
May 18 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
Vue Mint UI mt-swipe的使用方式
Jun 05 Vue.js
VUE递归树形实现多级列表
Jul 15 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
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
Angular 4环境准备与Angular cli创建项目详解
2017/05/27 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
python实现将元祖转换成数组的方法
2015/05/04 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
用Python实现读写锁的示例代码
2018/11/05 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
Pycharm中如何关掉python console
2020/10/27 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
先进个人事迹材料
2014/01/25 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
2014国培学习感言
2014/03/05 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技