Html2canvas是什么?

是一个脚本 这个脚本可以允许用户直接在浏览器上拍摄网页或其中一部分的"屏幕截图".屏幕截图是基于DOM,因此可能无法真实表示100%的准确度,因为它无法生成实际的屏幕截图,而是根据页面上的可用信息构建屏幕截图。

运行过程?

脚本遍历加载页面的DOM。它收集那里所有元素的信息,然后将其用于构建页面的表示形式。换句话说,它实际上并不截取页面的屏幕快照,而是根据它从DOM读取的属性来构建页面的表示形式。所以可能有些这个脚本识别不了的css或者html将会在编译过程中失效!

局限性

脚本使用的所有图像都必须位于相同的来源, 以便它无需代理即可读取它们。同样,如果canvas 页面上还有其他元素被跨域内容污染,它们将变脏并且无法被html2canvas读取。
该脚本不会呈现Flash或Java applet之类的插件内容。

安装

npm i html2canvas

导入

import html2canvas from 'html2canvas'

用法

html

<buttonclass="restore-btn"@click="saveImage('html2canvas', '图片名称')"
>下载图片</button>
<div id="html2canvas" ref="html2canvas">
截取内容
</div>

js

//图片格式转换方法dataURLToBlob(dataurl) {let arr = dataurl.split(',');let mime = arr[0].match(/:(.*?);/)[1];let bstr = atob(arr[1]);let n = bstr.length;let u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new Blob([u8arr], { type: mime });},//点击方法saveImage(divText, imgText) {let canvasID = this.$refs[divText];let that = this;let a = document.createElement('a');html2canvas(canvasID).then(canvas => {let dom = document.body.appendChild(canvas);dom.style.display = 'none';a.style.display = 'none';document.body.removeChild(dom);let blob = that.dataURLToBlob(dom.toDataURL('image/png'));a.setAttribute('href', URL.createObjectURL(blob));//这块是保存图片操作  可以设置保存的图片的信息a.setAttribute('download', imgText + '.png');document.body.appendChild(a);a.click();URL.revokeObjectURL(blob);document.body.removeChild(a);});},

关于网络图片截取不了 是因为跨域,上面说过脚本使用的所有图像都必须位于相同的来源,这里我们只需要给图片上增加一个属性crossOrigin="Anonymous",以及对应后台做跨域处理就行了

html2canvas参数

名称 默认 描述
async true 是否异步解析和呈现元素
allowTaint false 是否允许跨原始图像污染画布
backgroundColor #ffffff 画布背景颜色,如果在DOM中未指定,设置 null 为透明
canvas null 现有画布元素用作绘图的基础
foreignObjectRendering false 是否在浏览器支持的情况下使用ForeignObject渲染持
imageTimeout 15000 加载图像的超时(以毫秒为单位,设置 0 为禁用超时
ignoreElements (element)=>false 谓词函数,用于从渲染中删除匹配元素
logging true 启用日志记录以进行调试
onclone 在克隆文档进行渲染时调用的回调函数可用于修改将在不影响原始源文档的情况下呈现的内容。
proxy null Url到 代理 ,用于加载跨源图像。如果留空,则不会加载跨原始图像。
removeContainer true 是否要清理克隆的DOM元素html2canvas会暂时创建
scale window.devicePixelRatio 用于渲染的比例,默认为浏览器设备像素比率
useCORS false 用来设置是否允许使用跨域的图片进行访问
width element width canvas的宽度
height element height canvas高度设定
x element x-offset 裁剪画布x坐标
y element y-offset 裁剪画布y坐标
scrollX element scrollX 渲染元素时使用的x滚动位置(例如,如果Element使用 position: fixed )
scrollY element scrollY 渲染元素时使用的y滚动位置(例如,如果Element使用 position: fixed )
windowWidth Window.innerWidth 渲染元素时使用的窗口宽度,这可能会影响媒体查询之类的东西
windowHeight Window.innerHeght 染时使用的窗口高度 Element ,这可能会影响媒体查询等内容
taintTest true 在渲染前测试图片

利用html2canvas截取div保存为png图片并下载相关推荐

  1. vue使用html2canvas截取div内容生成海报~ vue生成海报

    最近项目有需求需要把生成海报.就在网上查了一些资源记录一下. 首先就是下载依赖了.老规矩: npm i html2canvas 然后在需要的组件里面引用: import html2canvas fro ...

  2. html2canvas源码修改,html2canvas把div保存高清图的方法代码

    http://www.bootcdn.cn/(可以搜索html2canvans) 1.选择html2canvas版本(这个版本可以放大倍数保证图片清晰) 默认生成的canvas图片在retina设备上 ...

  3. 利用PR将视频保存成一系列图片

    1.打开Pr,新建工程,文件>导入  选择视频文件. 2. 文件>导出>媒体(或者ctrl+M). 3.在导出设置里选择导出格式(JPEG或其他),在视频>基本设置里选择图片大 ...

  4. 图像处理软件--利用PR将视频保存成一系列图片

    1.打开Pr,新建工程,文件>导入 选择视频文件. 2.文件>导出>媒体(或者ctrl+M). 3.在导出设置里选择导出格式(JPEG或其他),在视频>基本设置里选择图片大小及 ...

  5. 利用ClaudiaIDE插件在VS中插入图片

    利用ClaudiaIDE插件在VS中插入图片 效果图 下载 设置插件 效果图 下载 github链接找到相应的版本如下图所示 我下了个2019的链接: 百度网盘 提取码:5xi8 设置插件 打开VS中 ...

  6. 【FFmpeg】java实现利用ffmpeg视频上传转码同时截取一帧保存为同名图片,并获取视频分辨率

    〇.前情提要 完成了视频上传,接下来是给上传的视频保存一张同名的jpg文件在同样文件夹中,并且获取到视频的分辨率. macOS Catalina 10.15.1 ffmpeg version 4.3. ...

  7. H5页面使用html2canvas实现div生成为图片,保存到手机

    在做微信公众号H5页面时,需求要求html页面生成base64图片,并保存到手机相册中.之前没做过,在网上搜了相关的资料.了解到了html2canvas.js. html2canvas首先将页面生成c ...

  8. 使用 html2canvas 将页面保存成图片

    有时我们需要实现在浏览器端直接对整个或部分页面进行截屏,比如移动端常见的"长按网页保存为图片"功能.这个借助 html2canvas 这个第三方 js 库即可实现,下面通过样例演示 ...

  9. Python利用bs4批量抓取网页图片并下载保存至本地

    Python利用bs4批量抓取网页图片并下载保存至本地 使用bs4抓取网页图片,bs4解析比较简单,需要预先了解一些html知识,bs4的逻辑简单,编写难度较低.本例以抓取某壁纸网站中的壁纸为例.(b ...

最新文章

  1. 周志华教授:关于深度学习的一点思考!
  2. 成为优秀高级程序员的10个要点
  3. python获取键盘输入能不能不按回车键_Github获8300星!用Python开发的一个命令行的网易云音乐...
  4. MyBatis 学习 - 注解
  5. java excel 导出图片_JAVA 使用 POI 导出 EXCEL 自定义背景颜色
  6. pca数学推导_PCA背后的统计和数学概念
  7. DCIM有助于数据中心的UPS部署
  8. Get value from agent failed:ZBX_TCP_READ() timed out(亲测)
  9. 6. COM编程——IConnectionPoint和IConnectionPointContainer接口介绍
  10. kali之msfconsole
  11. iphone开发 加速计
  12. python,计算并发现闰月的规律
  13. SOP:Ubuntu20安装微信
  14. 电话号码的字母组合(Java)
  15. Java正则表达式 - Matcher
  16. 3年前端入职健海科技(数疗领域方向),试用期总结
  17. java 对象向上转型_JAVA对象向上转型和向下转型
  18. painter海报插件
  19. SAP 设置定时任务
  20. python视频教程集合

热门文章

  1. 一文总结GitHub使用指南
  2. 《洪拳大师》:难得陈观泰演反派、詹森演正派
  3. ESP8266控制继电器(支持HOMEKIT)
  4. 西北工大被网络攻击,工业物联网安全更加值得警醒
  5. 丁威: 优秀程序员必备技能之如何高效阅读源码(二更)
  6. Java工具集-Java游戏台球
  7. 西门子PLC smart200伺服液压PID昆仑通态人机界面
  8. [python]用profile协助程序性能优化
  9. 运输验证ASTM D4169标准 富港检测技术(东莞)有限公司
  10. c# 定位内存快速增长_C# ASP.NET 优化程序性能、降低内存使用、提高程序运行速度...