Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >JS - 原生js实现 网页截图(+下载截图) 功能

JS - 原生js实现 网页截图(+下载截图) 功能

作者头像
xing.org1^
发布于 2018-06-25 02:24:17
发布于 2018-06-25 02:24:17
17.1K01
代码可运行
举报
文章被收录于专栏:前端说吧前端说吧
运行总次数:1
代码可运行

实现:html2canvas + canvas.toDataURL

首先,引入依赖插件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { html2canvas } from './html2canvas';

html2canvas截图模糊处理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 /*图片跨域及截图模糊处理*/
 2 let canvasContent = document.getElementById('canvas'),//需要截图的包裹的(原生的)DOM 对象
 3     width = canvasContent.clientWidth,//canvasContent.offsetWidth || document.body.clientWidth; //获取dom 宽度
 4     height = canvasContent.clientHeight,//canvasContent.offsetHeight; //获取dom 高度
 5     canvas = document.createElement("canvas"), //创建一个canvas节点
 6     scale = 4; //定义任意放大倍数 支持小数
 7 canvas.width = width * scale; //定义canvas 宽度 * 缩放
 8 canvas.height = height * scale; //定义canvas高度 *缩放
 9 canvas.style.width = canvasContent.clientWidth * scale + "px";
10 canvas.style.height = canvasContent.clientHeight * scale + "px";
11 canvas.getContext("2d").scale(scale, scale); //获取context,设置scale

opts配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 let opts = {
2     scale: scale, // 添加的scale 参数
3     canvas: canvas, //自定义 canvas
4     logging: false, //日志开关,便于查看html2canvas的内部执行流程
5     width: width, //dom 原始宽度
6     height: height,
7     useCORS: true // 【重要】开启跨域配置
8 };
9 //部分配置,其他另配

使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1 let shareContent = document.getElementById('XXX');
 2 export let html = (type,toDown=false) =>{
 3   html2canvas(domContent,opts).then(function(canvas){
 4     let imgUrl =  canvas.toDataURL('image/' + type);
 5     if(toDown){
 6       window.location.href = imgUrl;
 7     }else{
 8       return imgUrl;
 9     }
10   });
11 }

调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1 html('jpg') //只获取base64后的jpg图片地址
2 html('png',true) //下载png格式的图片功能

仓促记录,待完善和测试

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-05-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信刷屏的「给我一面国旗」如果要做到,技术原理是什么?
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
养码场
2019/09/26
7480
微信刷屏的「给我一面国旗」如果要做到,技术原理是什么?
为博客页面添加海报分享功能
以前浏览别的博主网站的时候总会在文章页末看到或多或少一些分享功能,比较常见的都是些社交平台的按钮,当时想的是功能虽好可有多少人会去用啊?心想嘛就是个摆设还不如不要占位置233
2Broear
2024/03/12
1240
前端给网页添加明水印的解决办法
创建一个水印图层,我们需要两步,一步是生成对应的图片,第二步是把图片放到最上层并全屏显示,最好还是按照格子状页面上显示多个水印内容。
伯约同学
2022/02/12
1.2K0
uniapp页面截长图,并非手机自带截图
手机截图只能获取当前页面可视区域的内容,如果我想将整个页面包括溢出屏幕的保存为图片。
英曼畅学
2023/04/18
2.3K0
浅谈两种前端截图方式:Canvas截图 vs SVG截图
如今很多网站都引入截图功能,可用于问题反馈、内容分享等实用需求,而前端截图也不知不觉成为了首选。今天为大家推荐两种前端截图方式,虽然有些局限,但是也能应付大部分项目需求。
JowayYoung
2020/04/01
13.7K2
html2canvas - 项目中遇到的那些坑点汇总
因为css里的只是展示画布显示的大小,不像这样是canvas真正的内里图画分辨率的大小。
xing.org1^
2020/06/29
4.5K0
带你领略 html2canvas
如果你希望排除某些元素被渲染,你可以添加data-html2canvas-ignore属性到这些元素,html2canvas将从渲染中排除它们。
公众号---人生代码
2020/11/19
1.8K0
带你领略 html2canvas
Vue 结合html2canvas和jsPDF实现html页面转pdf
E:\MyProjects\TMP\frontend>npm install html2canvas
授客
2020/04/30
4.9K0
Vue 结合html2canvas和jsPDF实现html页面转pdf
Web动态图片合成与分享——html2canvas方案实践
在web侧运营活动中,分享传播是重要的一环。普通的h5链接/结构化消息分享已经不能满足产品越来越大的脑洞。在很多场景下,我们需要将个性化内容(如帐号信息,头像,用户输入等)固化为一张完整的图片,一秒分享到朋友圈&AIO&群,藉此提高传播效率。
WendyGrandOrder
2018/10/19
8.3K2
Web动态图片合成与分享——html2canvas方案实践
html2canvas - 解决办法之图片跨域导致的截图空白
1. 后端支持:图片要是cdn上的地址,并且允许图片跨域,header头中设置应为   Access-Control-Allow-Origin:  * 2. 前端配置 1 var opts = { 2 scale: scale, // 添加的scale 参数 3 canvas: canvas, //自定义 canvas 4 logging: false, //日志开关,便于查看html2canvas的内部执行流程 5 w
xing.org1^
2018/05/17
2.7K0
jscanvas合成图片实现微信公众号海报功能
在微信公众号开发中,很多时候都有个需求是一张图加上头像和昵称或者其他数据生成自己的二维码海报或者是生成分享海报
仙士可
2019/12/19
1.4K0
HTML页面导出PDF——高清版
  需要做一个导出PDF的功能,网上找有很多,但是一般导出来的都是比较模糊的那种,下面这个是高清版的,导出的PDF都是几M,跟正常手动导出的差不多,很清晰。
_一级菜鸟
2019/09/10
2.1K0
vue中使用html2canvas及解决html2canvas截屏图片模糊问题
html2canvas  官方网站http://html2canvas.hertzen.com/index.html
lin_zone
2018/08/15
7.8K0
移动端H5页面截图
两个工具: html2canvas 官方地址:https://github.com/niklasvh/html2canvas
yangdongnan
2019/07/01
3.4K0
vue前端怎么导出图片_VUE中将页面导出为图片或者PDF
1.将页面html转换成图片 npm install html2canvas –save
全栈程序员站长
2022/09/01
2.6K0
【前端探索】移动端H5生成截图海报的探索
移动端H5生成图片海报分享,是比较常见的交互方式。生成的海报中,往往会有用户的个性化信息,比如头像、昵称等等。
luciozhang
2023/04/22
7510
如何使用vue2 实现截图的功能?
在Vue 2中实现截图功能,可以使用HTML5的Canvas元素和一些JavaScript代码来捕获屏幕或特定元素的截图。以下是一个简单的步骤和示例代码来实现这个功能:
星辰大海c
2023/11/08
9780
如何使用vue2 实现截图的功能?
vue 开发中遇到的功能模块
参考:https://www.jianshu.com/p/0cc51943147d
用户7043603
2022/02/25
4330
高质量前端快照方案:来自页面的「自拍」
将网页保存为图片(以下简称为快照),是用户记录和分享页面信息的有效手段,在各种兴趣测试和营销推广等形式的活动页面中尤为常见。
ConardLi
2019/12/19
2.7K0
高质量前端快照方案:来自页面的「自拍」
2种方式!带你快速实现前端截图
导语 | 本文将介绍在前端开发中页面截图的两种方式,包括对其实现原理和使用方式进行详细阐述,希望能为更多前端开发者提供一些经验和帮助。 一、 背景 页面截图功能在前端开发中,特别是营销场景相关的需求中, 是比较常见的。比如截屏分享,相对于普通的链接分享,截屏分享具有更丰富的展示、更多的信息承载等优势。最近在需求开发中遇到了相关的功能,所以调研了相关的实现和原理。 二、相关技术 前端要实现页面截图的功能,现在比较常见的方式是使用开源的截图npm库,一般使用比较多的npm库有以下两个: dom-to-image
腾讯云开发者
2022/03/03
4.2K1
推荐阅读
相关推荐
微信刷屏的「给我一面国旗」如果要做到,技术原理是什么?
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验