如何用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打开其他项目页面并传入数据详解
Nov 25 Vue.js
Vue组件生命周期运行原理解析
Nov 25 Vue.js
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
vue生命周期钩子函数以及触发时机
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
PHP中常用数组处理方法实例分析
2008/08/30 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
在校大学生个人的自我评价
2014/02/13 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
药剂专业自荐书
2014/06/20 职场文书
公司授权委托书范文
2014/09/21 职场文书
《日月潭》教学反思
2016/02/20 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL