如何用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.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
在vue项目中封装echarts的步骤
Dec 25 Vue.js
vue3弹出层V3Popup实例详解
Jan 04 Vue.js
详解实现vue的数据响应式原理
Jan 20 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
vue使用watch监听属性变化
Apr 30 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安全配置 如何配置使其更安全
2011/12/16 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
nodejs发送http请求时遇到404长时间未响应的解决方法
2017/12/10 NodeJs
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
python3中sys.argv的实例用法
2020/04/24 Python
python suds访问webservice服务实现
2020/06/26 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
怎样写演讲稿
2014/01/04 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
幼儿园运动会入场词
2014/02/10 职场文书
师范生自荐信模板
2014/05/28 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
学生会个人总结范文
2015/02/15 职场文书
安全保证书格式
2015/02/28 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
增值税发票丢失证明
2015/06/19 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python