如何用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 18 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
如何优化vue打包文件过大
Apr 13 Vue.js
详解Vue3使用axios的配置教程
Apr 29 Vue.js
Vue Element plus使用方法梳理
Dec 24 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
BBS(php &amp; mysql)完整版(七)
2006/10/09 PHP
详解PHP显示MySQL数据的三种方法
2008/06/05 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php向js函数传参的几种方法
2014/08/10 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
非常全面的php日期时间运算汇总
2015/11/04 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python实现两个文件合并功能
2018/04/01 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
带你认识Django
2019/01/15 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
商务会议邀请函
2014/01/09 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
入股协议书范本
2014/04/14 职场文书